使用Python抓取和解析Google搜索结果
我在网上问了一个关于如何爬取和保存网页的问题。原问题的一部分是:怎么从互联网上爬取和保存很多“关于”页面。
经过进一步的研究,我找到了几个可以用来抓取和解析的工具(在下面列出)。
今天,我遇到了另一个关于如何从谷歌搜索结果中抓取数据的讨论,这个讨论是关于Ruby的。这为我的问题提供了一个很好的解决方案,可以省去很多爬取的工作。
现在的新问题是:在Python中,如何抓取给定关键词(在这个例子中是“关于”)的谷歌搜索结果,并最终获取链接以便进一步解析。有哪些方法和库是最好的选择?(从易学和易实现的角度来看)。
顺便说一下,在这个网站上,已经实现了完全相同的功能,但需要付费才能获取更多结果。如果没有开源的解决方案,我更希望自己动手做,同时学习更多的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上的最新版本默认情况下无法使用。这两个回复(a b)提供了解决方案,目前这个方法仍然有效。但也许将来某一天,由于谷歌的变化或封锁,它可能会再次失效。
目前已知的资源:
对于抓取,Scrapy似乎是一个很受欢迎的选择,还有一个叫ScraperWiki的网络应用也很有趣,另外还有另一个项目可以提取它的库用于离线/本地使用。Mechanize在不同的讨论中也被提到过好几次。
对于解析HTML,BeautifulSoup似乎是最受欢迎的选择之一。当然,lxml也是。
9 个回答
看看这个很棒的urllib封装,它可以用来抓取网页内容。你可以在这里找到它:https://github.com/mattseh/python-web/blob/master/web.py
你可以看看这个叫 xgoogle 的东西,它可能对你有帮助……你提到的很多需求在这里都能找到。