Python - 简单方法抓取谷歌,下载指定搜索的前N个结果(完整.html文档)?
有没有简单的方法可以抓取谷歌的搜索结果,并把前N个(比如1000个)网页的文本(仅文本)写下来?
举个例子,假设你搜索“坏狼”这个词,然后下载前1000个结果的文本——也就是说,实际上只下载这1000个网页的文本内容(而不是整个网站)。
我在想,这是不是可以用urllib2这个库?我用的是Python 3.1,如果这有帮助的话。
3 个回答
3
如前所述,抓取谷歌的数据是违反他们的服务条款的。不过,这可能不是你想要的答案。
有一个PHP脚本可以很好地抓取谷歌的数据:http://google-scraper.squabbel.com/ 你只需要输入一个关键词和想要的结果数量,它就会返回所有相关的结果。然后你只需提取返回的链接,使用urllib或curl来获取网页的源代码,就完成了。
不过,除非你有超过100个代理服务器,否则最好不要尝试抓取谷歌。因为在尝试几次后,他们很容易就会暂时封禁你的IP地址。
4
可以看看 BeautifulSoup,这是一个用来从网页上抓取内容的工具。它对那些有点问题的网页非常包容,这样就能帮助你,因为并不是所有的网页都写得很规范。所以你应该能够:
- 请求 http://www.google.ca/search?q=QUERY_HERE 这个链接
- 用BeautifulSoup提取并跟踪结果链接(结果链接的类名看起来是class="r")
- 用BeautifulSoup从结果页面提取文本
3
想要通过程序获取Google的搜索结果,最正规的方式就是使用Google的自定义搜索API。正如icktoofay所说,其他一些方法,比如直接抓取搜索结果或者使用xgoogle这个模块,都是违反Google的服务条款的。因此,你可能会考虑使用其他搜索引擎的API,比如必应的API或者雅虎的服务。