我正在尝试从python应用程序运行谷歌搜索查询.有没有任何python接口可以让我这样做?如果没有人知道哪个Google API可以让我这样做.谢谢.
有一个简单的例子这里(缺少独有的一些报价;-).你在Web上看到的大部分内容都是旧的,已停产的SOAP API的Python接口 - 我指向的示例使用了更新且受支持的AJAX API,这绝对是你想要的! - )
编辑:这是一个更完整的Python 2.6示例,包含所有需要的引号&c; - )...:
#!/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')
这是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')
这是我的方法: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月).
我是python的新手,我正在调查如何做到这一点.所提供的示例都不适合我.如果你提出很多(很少)请求,有些会被谷歌阻止,有些已经过时了.解析谷歌搜索html(在请求中添加标题)将一直有效,直到谷歌再次更改html结构.你可以使用相同的逻辑在任何其他搜索引擎中搜索,查看html(view-source).
import urllib2 def getgoogleurl(search,siteurl=False): if siteurl==False: return 'http://www.google.com/search?q='+urllib2.quote(search) else: return 'http://www.google.com/search?q=site:'+urllib2.quote(siteurl)+'%20'+urllib2.quote(search) def getgooglelinks(search,siteurl=False): #google returns 403 without user agent headers = {'User-agent':'Mozilla/11.0'} req = urllib2.Request(getgoogleurl(search,siteurl),None,headers) site = urllib2.urlopen(req) data = site.read() site.close() #no beatifulsoup because google html is generated with javascript start = data.find('') end = data.find('') if data[start:end]=='': #error, no links to find return False else: links =[] data = data[start:end] start = 0 end = 0 while start>-1 and end>-1: #get only results of the provided site if siteurl==False: start = data.find('links = getgooglelinks('python','http://www.stackoverflow.com/') for link in links: print link(编辑1:添加参数以将谷歌搜索范围缩小到特定网站)
(编辑2:当我添加这个答案时,我正在编写一个Python脚本来搜索字幕.我最近将它上传到Github:Subseek)
推荐阅读
如何解决《插入表并将另一列设置为自动增量列值》经验,为你挑选了1个好方法。 ... [详细] 如何解决《RaspberryPi上无法运行Qt5视频播放器示例》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在iPadPro中,启动屏幕故事板显示在模拟器中但不显示设备》经验,为你挑选了0个好方法。 ... [详细] 如何解决《无法使用EC2上的机器IP地址打开spinnakerdeckUI》经验,为你挑选了1个好方法。 ... [详细] 如何解决《带有退货声明的短路》经验,为你挑选了1个好方法。 ... [详细] 如何解决《是否可以检测用户是否安装并使用了Google健身应用?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《Laravel5注销或会话破坏》经验,为你挑选了1个好方法。 ... [详细] 如何解决《多处理队列子类问题》经验,为你挑选了1个好方法。 ... [详细] 如何解决《TLS握手错误》经验,为你挑选了0个好方法。 ... [详细] 如何解决《Android自定义属性未显示》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何在CakePHP3中的model->save()上获取SQL查询?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《允许管理员用户查看其他用户类型可以查看/执行的操作?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《将对象列表保存到文本文件》经验,为你挑选了1个好方法。 ... [详细] 如何解决《GNUmalloc_info():获得真正分配的内存?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《在正则表达式拆分期间发生javascript未定义元素》经验,为你挑选了1个好方法。 ... [详细] 如何解决《从数组中选择奇数或偶数元素》经验,为你挑选了1个好方法。 ... [详细] 如何解决《缺少Type.GetMember和MemberInfo.GetCustomAttributes(C#PCL.NET4.6)》经验,为你挑选了1个好方法。 ... [详细] 如何解决《转储PostgresDB,时间和.sql文件的权重》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何直接写入模仿scalar_summary的摘要?》经验,为你挑选了2个好方法。 ... [详细] 如何解决《更改左侧的ToolBar默认图标》经验,为你挑选了1个好方法。 ... [详细]吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1ADB连接错误:无法创建调试桥:无法启动adb服务器:无法检测adb版本,adb输出
- 2Pygame和PyGTK并排
- 3在刀片中使用刀片
- 4如何在python中实现像sum(2)(3)(4)......(n)这样的函数?
- 5无法在R版本3.2.3中完全安装软件包("caret")
- 6PG :: UndefinedTable:错误:关系“ ...”不存在
- 7断言(0)是什么意思?
- 8MSBuild - >(箭头/破折号更大/ - >)运算符有什么作用?
- 9如果满足某些条件,返回true或false的函数?
- 10“使用守护程序的错误响应:找不到404页面”使用docker命令时
- 11ASP.NET MVC 6:在单独的程序集中查看组件
- 12具有复杂对象的角度形式模型
- 13Jquery插件Croppie裁剪图像错误
- 14将自定义UITableViewCell从nib加载到Swift中的UIViewController
- 15从glTexStorage3D切换到glTexImage3D
- 16使用Opencv检测图像中矩形的中心和角度
- 17为什么信号和插槽比普通的旧回调更好?
- 18用户无权执行:cloudformation:CreateStack
- 19在IntelliJ IDEA中可视化已更改/添加/删除的Git行
- 20如何从keyup事件的文本框中获取最新值?
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有