【发布时间】:2011-12-06 12:07:31
【问题描述】:
我向question 询问了关于实现抓取和保存网页的总体思路。 原问题的一部分是:如何从互联网上抓取并保存大量的“关于”页面。
经过一些进一步的研究,我在抓取和解析方面有了一些选择(列在底部)。
今天,我遇到了另一个Ruby discussion,关于如何从 Google 搜索结果中抓取。这为我的问题提供了一个很好的替代方案,可以节省爬行部分的所有工作。
新的问题是:在 Python 中,抓取给定关键字的 Google 搜索结果,在本例中为“About”,最后获取链接以进行进一步解析. 继续使用的方法和库的最佳选择是什么? (以易于学习和易于实施为衡量标准)。
附言在this website,实现了完全相同的东西,但关闭并要钱以获得更多结果。如果没有可用的开源代码,我宁愿自己做,同时学习更多 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()
Note 关于 xgoogle(下面由 Mike Pennington 回答): 它的 Github 的最新版本默认情况下已经无法使用,可能是由于 Google 搜索结果的变化。该工具主页上的这两个回复(ab)提供了一个解决方案,目前仍在使用此调整。但也许有一天它可能会由于 Google 的更改/阻止而再次停止工作。
目前已知的资源:
-
1234563 Mechanize 在不同的讨论中也被多次提及。
对于解析 HTML,BeautifulSoup 似乎是最 流行的选择。当然。 lxml 也是。
【问题讨论】:
-
你在正确的轨道上,但如果你过于激进,如果谷歌阻止你或开始抛出验证码,请不要感到惊讶。
-
@jathanism 哦..是的..对..我已经考虑过了。谢谢你的提示。希望我能在被 Google 发现之前得到我的结果。
-
你为什么不用谷歌的实际search API?
-
@DanielRoseman,很好。现在去看看。
-
它仅从 2 页打印结果,而 google 上的搜索结果显示超过数千。无论如何我可以将所有网址抓取到最后吗?
标签: python screen-scraping web-scraping google-search-api