【问题标题】:How can I get Google search results with Python 3?如何使用 Python 3 获取 Google 搜索结果?
【发布时间】:2014-11-10 19:26:37
【问题描述】:

我正在尝试编写一个 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

【问题讨论】:

  • 看来问题出在您的google_search 方法中,但您没有提供它的实现。这使得无法确定地回答您的问题。
  • 我的错。我添加了它。坦克!

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


【解决方案1】:

从这个 api 可以得到的最大结果数是每个查询 8 个结果。

您可以通过在 url 中添加“&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/)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2011-12-06
    相关资源
    最近更新 更多