Ruby,Scrape完全用JavaScript编写的页面

时间:2011-07-07 04:11:24

标签: ruby screen-scraping hpricot

我正在玩Ruby + Hpricot并构建一个简单的scraper。我可以与其他网站合作,没有任何问题。但是,如果页面完全用JavaScript编写,那么可以删除吗? 但是,谷歌搜索结果页面现在似乎完全基于JavaScript,除了一些内部链接。

  • 这样写的页面不能被常规工具如Mechanize& Hpricot(我猜他们不能)

  • 他们是否有可能尝试渲染页面(如浏览器)然后收集数据的工具/宝石?

谢谢!

编辑:感谢您的回复。我意识到直接刮谷歌是不对的,有一个API可以使用。问题的核心是我想要找到的真正的是,如果有一个完全用javascript编写的页面(包括文本和内容 - 可能会被混淆。)是否有一个gem将尝试仅在文本中呈现页面然后得到它的文本内容?

4 个答案:

答案 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地址。