如何使用Python 3获取Google搜索结果?

时间:2014-10-29 23:50:15

标签: python python-3.x google-search

我正在尝试编写一个类似于以下内容的Python 3函数:

links = google_search('"done" "store"')
for l in links: print(l)

输出应该是一个很长的列表,如:

www.cnn.com/articles/done_with_sotres.html
www.something.org/whatever?p=bla
.
.
.

我找到了这个建议,Google Search from a Python App,但我似乎只得到4个网址"点击",我不确定如何得到其余的。 任何建议都将受到高度赞赏!

编辑:愚蠢的我!我没有实施。无论如何,它是链接中描述的那个:

def search(search_string):
  query = urllib.parse.urlencode({'q': search_string})
  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'])
  hits = data['results']
  print('Top %d hits:' % len(hits))
  for h in hits: print(' ', h['url'])
  print('For more results, see %s' % data['cursor']['moreResultsUrl'])
  return hits

1 个答案:

答案 0 :(得分:5)

每个查询可以从此api获得的最大结果数为8个结果。

你可以通过添加"& rsz = large"来获得它。到网址:

url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s&rsz=large' % query    

还有另一个有用的论点" start ="它允许您移动结果集。 所以基本上你可以循环你可以询问第一个块的8个结果,第二个块等等(start = 1,start = 8等等)。

url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=large&%s&start=%d' % (query, i)    

请注意,此api已弃用(https://developers.google.com/web-search/docs/