我问了一个关于实现抓取和保存网页的总体思路的问题。原始问题的一部分是:如何从互联网上抓取并保存大量“关于”页面。
通过一些进一步的研究,我有一些选择可以继续进行抓取和解析(列在底部)。
今天,我遇到了另一个关于如何从 Google 搜索结果中抓取的Ruby 讨论。这为我的问题提供了一个很好的选择,它将节省爬行部分的所有努力。
新问题是:在 Python 中,为给定关键字(在本例中为“About”)抓取Google 搜索结果,最后获取链接以进行进一步解析。继续使用的方法和库的最佳选择是什么?(以易于学习和易于实施为衡量标准)。
ps在这个网站上,实现了完全一样的东西,但是关闭了,要更多的结果要钱。如果没有可用的开源代码,我更愿意自己做,同时学习更多的 Python。
哦,顺便说一句,如果有的话,从搜索结果中解析链接的建议会很好。尽管如此,易于学习和易于实施。刚开始学习Python。:P
最后更新,问题解决。使用 xgoogle 的代码,请阅读以下部分中的注释以使 xgoogle 正常工作。
import time, random
from xgoogle.search import GoogleSearch, SearchError
f = open('a.txt','wb')
for i in range(0,2):
wt = random.uniform(2, 5)
gs = GoogleSearch("about")
gs.results_per_page = 10
gs.page = i
results = gs.get_results()
#Try not to annnoy Google, with a random short wait
time.sleep(wt)
print 'This is the %dth iteration and waited %f seconds' % (i, wt)
for res in results:
f.write(res.url.encode("utf8"))
f.write("\n")
print "Done"
f.close()
关于 xgoogle 的注意事项(下面由 Mike Pennington 回答):它的 Github 的最新版本默认情况下已经无法正常工作,可能是由于 Google 搜索结果的变化。该工具主页上的这两个回复 ( a b ) 提供了一个解决方案,它目前仍在使用此调整。但也许有一天,由于谷歌的更改/阻止,它可能会再次停止工作。
目前已知的资源:
对于抓取,Scrapy似乎是一个流行的选择,一个名为ScraperWiki的网络应用程序非常有趣,还有另一个项目提取它的库以供离线/本地使用。机械化也在不同的讨论中被多次提出。
对于解析 HTML,BeautifulSoup似乎是最受欢迎的选择之一。当然。lxml也是。