使用python从google搜索中获取结果

2024-09-29 19:28:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从google搜索中提取前50个结果,并得到每个搜索结果的标题和片段。 我正在使用以下代码。在

#!/usr/bin/python3
import json
import urllib.request, urllib.parse

def showsome(searchfor):
   query = urllib.parse.urlencode({'q': searchfor})
   url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % query
   search_response = urllib.request.urlopen(url)
   search_results = search_response.read().decode("utf8")
   results = json.loads(search_results)
   data = results['responseData']
   print('Total results: %s' % data['cursor']['estimatedResultCount'])
   print(data['results'])
   hits = data['results']
   print('Top %d hits:' % len(hits))
   print(hits)

for h in hits:
    print(' ',h['title'])
print(' ', h['url'])

showsome('jaguar')

但我只得到4个结果。即在搜索结果页面上显示图像搜索之前的结果。 有人能为这个任务推荐一个更好的方法吗。 如果你能给出一个通用的方法,可以在其他搜索引擎上工作,那就更好了雅虎在


Tags: importjsonurlsearchdataparserequestajax
1条回答
网友
1楼 · 发布于 2024-09-29 19:28:04

here所述,该API已被弃用。它看起来还可以用,但我不指望它还能继续使用。你应该寻找一个替代的API。在

然而,每个查询的默认结果数是4。最小值为1,最大值为8,可以使用rst查询参数进行设置,即追加&rst=8,以获得每个查询8个结果。在

您将需要进行其他查询以检索更多结果。第一个结果是用start查询参数指定的,例如&start=4将从第四个开始返回结果。您可以使用results['responseData']['cursor']为您提供页码到起始偏移量的映射,例如:

>>> pprint(results['responseData']['cursor'])
{'currentPageIndex': 0,
 'estimatedResultCount': '29600000',
 'moreResultsUrl': 'http://www.google.com/search?oe=utf8&ie=utf8&source=uds&start=0&hl=en&q=jaguar',
 'pages': [{'label': 1, 'start': '0'},
           {'label': 2, 'start': '4'},
           {'label': 3, 'start': '8'},
           {'label': 4, 'start': '12'},
           {'label': 5, 'start': '16'},
           {'label': 6, 'start': '20'},
           {'label': 7, 'start': '24'},
           {'label': 8, 'start': '28'}],
 'resultCount': '29,600,000',
 'searchResultTime': '0.19'}

可以在链接的documentation中找到详细信息,请参阅标题为“标准URL参数”的部分。在

雅虎的API会有所不同(我希望如此),所以这种方法在那里不起作用。在

相关问题 更多 >

    热门问题