我正试图从Google搜索中获得前20个结果。
当我使用urllib2.urlopen()
时,它会给我一个错误,并说我被禁止了。
我听说它与伪造用户代理字符串有关,但我没有urllib2经验,如果有人可以提供帮助,我将非常感激。
谢谢, giodamelio
答案 0 :(得分:2)
基本上有两种方法 - 直接访问Google API或使用xGoogle包。
Google的JSON\Atom API要求您获取帐户和密钥。它是以自动方式进行搜索的标准和首选方式,这意味着您不会被禁止使用其服务。请求非常简单(引用谷歌自己的例子):
GET https://www.googleapis.com/customsearch/v1?
key=INSERT-YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=lectures
您将获得JSON响应,可以使用大量Python包轻松处理。
xgoogle package有点快(请参阅Lakshman Prasad's answer),但Google可能会阻止(或更糟,得错或空答案),导致程序停止工作。
如果您只是需要为项目完成一些搜索,请使用xGoogle。如果您的程序需要更长时间,并且您的搜索没有被阻止,请花费15分钟来使用其API。
答案 1 :(得分:2)
你应该只使用一个可以完成所有艰苦工作的库。
xGoogle可让您将搜索结果列入列表
从示例中,
from xgoogle.search import GoogleSearch
gs = GoogleSearch("quick and dirty")
gs.results_per_page = 50
results = gs.get_results()
答案 2 :(得分: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)