从Python应用中搜索Google
我想在一个Python应用程序中运行谷歌搜索查询。有没有什么Python接口可以让我做到这一点?如果没有,谁知道哪个谷歌API可以让我实现这个功能?谢谢。
4 个回答
11
这是我对这个问题的看法:http://breakingcode.wordpress.com/2010/06/29/google-search-python/
这里有几个代码示例:
# Get the first 20 hits for: "Breaking Code" WordPress blog
from google import search
for url in search('"Breaking Code" WordPress blog', stop=20):
print(url)
# Get the first 20 hits for "Mariposa botnet" in Google Spain
from google import search
for url in search('Mariposa botnet', tld='es', lang='es', stop=20):
print(url)
请注意,这段代码并没有使用Google的API,并且到现在(2012年1月)仍然可以正常工作。
17
这是Alex的回答,已经转换成Python3的版本
#!/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'])
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'])
showsome('ermanno olmi')
72
这里有一个简单的例子,可以在这里找到(奇怪的是,里面缺少了一些引号;-)。网上大部分内容都是关于旧的、已经停止服务的SOAP API的Python接口,而我提到的这个例子使用的是更新的、仍然被支持的AJAX API,这个才是你真正需要的!-)
编辑:这里有一个更完整的Python 2.6的例子,里面包含了所有需要的引号等等...:
#!/usr/bin/python
import json
import urllib
def showsome(searchfor):
query = urllib.urlencode({'q': searchfor})
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % query
search_response = urllib.urlopen(url)
search_results = search_response.read()
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']
showsome('ermanno olmi')