将Google搜索结果返回给Python

3 投票
3 回答
3096 浏览
提问于 2025-04-16 08:06

我想从谷歌搜索中获取前20个结果。
当我使用 urllib2.urlopen() 时,它给我报错,说我被禁止访问。
我听说这和伪装你的用户代理字符串有关,但我对urllib2几乎没有经验,如果有人能帮我,我会非常感激。

谢谢,
giodamelio

3 个回答

2

在编程中,有时候我们需要把一些数据从一个地方转移到另一个地方。这就像把水从一个杯子倒到另一个杯子一样。这个过程可能会涉及到不同的步骤,比如选择要转移的数据、确定目标位置等等。

有些时候,数据的格式可能不一样,就像一个杯子是圆的,另一个是方的,这样就需要我们想办法把水倒得更顺畅,确保不会洒出来。这就需要一些额外的处理,比如转换数据的格式。

总之,数据转移的过程就像是一个简单的搬家,只不过我们搬的是信息,而不是家具。理解这个过程可以帮助我们更好地管理和使用数据。

req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
response = urllib2.urlopen(req)
2

基本上有两种方法可以获取谷歌的搜索结果:直接使用谷歌的API,或者使用xGoogle这个包。

谷歌自己的API

谷歌的JSON\Atom API需要你先注册一个账号并获取一个密钥。这是获取搜索结果的标准和推荐方式,这样你就不会被谷歌封禁。请求的方式很简单(引用谷歌自己的例子):

GET https://www.googleapis.com/customsearch/v1?
            key=INSERT-YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=lectures

你会收到一个JSON格式的响应,这种格式可以通过很多Python包轻松处理。

xGoogle

xgoogle包的速度相对较快(可以参考Lakshman Prasad的回答),但它可能会被谷歌封锁(更糟糕的是,可能会返回错误或空的结果),这样你的程序就会停止工作。

优缺点

如果你只是想为一个项目获取一些搜索结果,可以使用xGoogle。如果你的程序需要长期运行,并且不希望搜索被封锁,花15分钟来使用谷歌的API是值得的。

2

你可能只需要使用一个库,这样就能省去很多麻烦。

xGoogle 这个工具可以帮你把搜索结果整理成一个列表。

从下面的例子中可以看到,

from xgoogle.search import GoogleSearch
gs = GoogleSearch("quick and dirty")
gs.results_per_page = 50
results = gs.get_results()

撰写回答