使用python脚本进行谷歌搜索[关闭]

Posted

技术标签:

【中文标题】使用python脚本进行谷歌搜索[关闭]【英文标题】:Google search using python script [closed] 【发布时间】:2011-04-23 08:25:35 【问题描述】:

谁能帮我写一个python脚本来搜索谷歌并打印***结果的链接。

【问题讨论】:

我相信有人可以。到目前为止你写了什么? 或者您正在寻找多基本的帮助? Beginners?开始使用web scraping? @jball 我还没有编码。我是 python 新手。我已经学习了python编码的基本结构。所以为了实施谷歌搜索,你能建议我从哪里开始。使用什么样的模块? 【参考方案1】:

也许,像这样?

导入 urllib 将 json 导入为 m_json 查询 = raw_input ('查询:') 查询 = urllib.urlencode ( 'q' : 查询 ) 响应 = urllib.urlopen ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&' + 查询).read() json = m_json.loads ( 响应 ) 结果 = json ['responseData'] ['results'] 结果的结果: 标题 = 结果['标题'] url = result['url'] # 是原来的 URL 并且抛出了一个名称错误异常 打印(标题+';'+网址)

阅读文档http://docs.python.org/

[编辑] 由于 AJAX API 已死,您可以使用第三方服务,例如 SerpApi,他们确实提供了 Python library。

【讨论】:

这只会给出五个结果? 此 api 不再可用。我们必须使用developers.google.com/custom-search【参考方案2】:

最好使用google apis 但是一个非常丑陋的版本..(替代使用google api) 您可以根据需要过滤内容

import os, urllib, sys
filename = 'http://www.google.com/search?' + urllib.urlencode('q': ' '.join(sys.argv[1:]) )
cmd = os.popen("lynx -dump %s" % filename)
output = cmd.read()
cmd.close()
print output

当您在 google 上搜索内容时,它将准确打印浏览器应显示的内容

【讨论】:

对“lynx -dump”很感兴趣 我通常用re(正则表达式模块)来“转储”页面的源代码会得到很好的结果。以防万一无法使用 Linux ;o)【参考方案3】:
from pygoogle import pygoogle
g = pygoogle('quake 3 arena')
g.pages = 5
print '*Found %s results*'%(g.get_result_count())
g.get_urls()

【讨论】:

老兄,你刚刚从 pygoogle 复制并粘贴了它,它不再适用于仅供参考。您也提供了零解释。【参考方案4】:

正如@Zloy Smiertniy 指出的那样,可以在here 找到答案。

但是,如果您使用的是 Python 3,raw_inputurllib 的语法已经改变,必须解码 response。因此,对于 Python 3,可以使用:

import urllib
import urllib.request
import json
url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&"
query = input("Query:")
query = urllib.parse.urlencode( 'q' : query  )
response = urllib.request.urlopen (url + query ).read()
data = json.loads ( response.decode() )
results = data [ 'responseData' ] [ 'results' ]
for result in results:
    title = result['title']
    url = result['url']
    print ( title + '; ' + url )

【讨论】:

在 python3 中我得到这个错误:'module' object has no attribute 'parse' 嗯...奇怪。根据docs.python.org/3/library/urllib.html,它应该在那里。我注意到在重新运行脚本后,我必须添加 import urllib.request(现在在更新的答案中),所以 import urllib.parse 可能对您的情况有所帮助。另请注意,在重新运行脚本后,我无法获得response 的输出,因此url 可能在我上次使用脚本后发生了变化。祝你好运 此 API 不再可用,替代方案是 google-custom-search。【参考方案5】:

我是 Python 的新手。只是我对谷歌搜索的简单想法。

import webbrowser
lib=raw_input("Enter what you want to search for:")
ur="https://www.google.co.in/gfe_rd=cr&ei=Q7nZVqSBIMSL8QeBpbOoDQ#q="
webbrowser.open_new(ur+lib)

【讨论】:

这实际上并没有按照要求执行;它通过打开浏览器窗口执行 google 搜索,但 Python 代码从未接收到要显示(或以其他方式操作)的搜索结果。【参考方案6】:

试试这个,它的使用非常简单: https://pypi.python.org/pypi/google

文档:https://breakingcode.wordpress.com/2010/06/29/google-search-python/

Github:https://github.com/MarioVilas/google

安装这个python包,使用就这么简单:

# Get the first 5 hits for "google 1.9.1 python" in Google Pakistan
from google import search

for url in search('google 1.9.1 python', tld='com.pk', lang='es', stop=5):
    print(url)

【讨论】:

geeksforgeeks.org/performing-google-search-using-python-code 这对我有用,除了使用 tld='...' 键始终导致“连接被拒绝”错误。要搜索确切的短语,您可以用双引号将其括起来,就像正常的 google 搜索一样。【参考方案7】:

尝试以下方法:

import webbrowser
lib = input()
url = "https://www.google.co.in/search?q=" +(str(lib))+ "&oq="+(str(lib))+"&gs_l=serp.12..0i71l8.0.0.0.6391.0.0.0.0.0.0.0.0..0.0....0...1c..64.serp..0.0.0.UiQhpfaBsuU"
webbrowser.open_new(url)

【讨论】:

这不能回答 OP 的问题。它只是在浏览器窗口中打开页面(即使 OP 要求提供 python 脚本)并且它不会打印出结果(链接)。【参考方案8】:

我已使用 SERP API 来完成此操作。

说明相当简单:

pip install google-search-results

而用法是:

from lib.google_search_results import GoogleSearchResults
query = GoogleSearchResults("q": "coffee")
json_results = query.get_json()

更多高级用法在 Github 上。

【讨论】:

以上是关于使用python脚本进行谷歌搜索[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

重大改变!Python或将取代VBA,成为Excel官方脚本语言;缺少爆发力的Ruby在缓慢衰落;谷歌明年关闭Tango项目

使用python关闭计算机(linux)

在 Windows 10 上使用 Python 关闭 WiFi?

Python自动化[关闭]

如何在 linux shell 脚本中使用正则表达式搜索文件 [关闭]

如何在目录中的所有 csvs 文件中进行 python 关键字搜索和单词计数器并写入单个 csv? [关闭]