我正在玩Ruby + Hpricot并构建一个简单的scraper。我可以与其他网站合作,没有任何问题。但是,如果页面完全用JavaScript编写,那么可以删除吗? 但是,谷歌搜索结果页面现在似乎完全基于JavaScript,除了一些内部链接。
这样写的页面不能被常规工具如Mechanize& Hpricot(我猜他们不能)
他们是否有可能尝试渲染页面(如浏览器)然后收集数据的工具/宝石?
谢谢!
编辑:感谢您的回复。我意识到直接刮谷歌是不对的,有一个API可以使用。问题的核心是我想要找到的真正的是,如果有一个完全用javascript编写的页面(包括文本和内容 - 可能会被混淆。)是否有一个gem将尝试仅在文本中呈现页面然后得到它的文本内容?
答案 0 :(得分:2)
这是一个关闭即时加载的链接 http://www.google.com/webhp?hl=en&tab=ww&complete=0
如果需要,可以使用PhantomJS(C ++)或PyPhantomJS(Python)进行屏幕抓取。
PyPhantomJS还有一个非常好的插件系统,C ++没有。
还有一个刮人库,有人刚刚为它发布 Google Groups post | GitHub address
注意:正如其他人所说,谷歌不希望人们刮掉他们的搜索结果。我建议遵守他们的服务条款。
答案 1 :(得分:2)
这非常非常重要,所以请仔细聆听:
总是先检查'robots.txt',如果它不告诉您,请不要刮擦!
如果你看http://www.google.com/robots.txt,你会清楚地看到这一行:
Disallow: /search
编辑(根据提问者的评论)
暂时搁置“robots.txt”问题,无论如何,使用更简单的网站可能会更好。我建议使用一两个不经常更改的网站,这样您就可以轻松地重现结果并验证所有内容是否按预期运行。
答案 2 :(得分:1)
你应该看看Google's TOS。不允许刮取搜索结果。使用他们的搜索API。
答案 3 :(得分:0)
如果你刮掉谷歌,你绝对必须使用代理,至少100+。否则他们会轻易禁止你的IP地址。