2011-07-07 22 views
0

我在玩Ruby + Hpricot并构建一个简单的刮板。我能够与其他网站一起工作,无任何问题。但是,如果一个页面完全用JavaScript编写,那么可以被刮掉吗? 但是,google搜索结果页面现在似乎完全是基于JavaScript的,除了一些内部链接。 Ruby,Scrape页面完全用JavaScript编写

  • 页面可以这样写不被常规工具,如机械化&刮角度来说,Hpricot(我的猜测是,他们不能)

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

谢谢!

编辑:感谢您的回复。我意识到直接刮谷歌是不对的,有一个API的地方,可以使用。这个问题的核心是我想要发现的确实是,如果有一个页面完全用JavaScript编写的(包括文本和内容 - 可能会被模糊处理)。是否有一个gem会尝试仅以文本呈现页面然后获取其文本内容?

+3

为什么你会试图刮谷歌,而不是使用他们的API? (提示:谷歌搜索结果在没有JS的情况下工作得很好,至少如果你使用的是基于文本的网络浏览器。) –

+1

谷歌可能不喜欢你刮他们的网页。您应该使用他们的API(并检查他们在那里有哪些服务条款) – Thilo

+0

@Chris:谢谢,我正在用lynx检查他们用于常规文本结果页面的URL。 @Thilo:我明白,我只是在学习,所以我可能只会用几页来工作。不要以为他们会(关心)。 – DMin

回答

2

以下是关闭即时加载的链接。
http://www.google.com/webhp?hl=en&tab=ww&complete=0

  • 他们是工具/使用的宝石,可能大概尝试呈现的页面(如浏览器),然后收集数据?

如果需要,您可以使用PhantomJS(C++)或PyPhantomJS(Python)进行屏幕抓取。

PyPhantomJS也有一个非常好的插件系统,而C++没有。

还有一个刚刚为它发布的图书库。
Google Groups post | GitHub address

注意:正如其他人所说的,Google不希望人们刮取搜索结果。我建议遵守他们的服务条款。

2

这是非常非常重要的,所以请仔细听:

始终检查的“robots.txt”,第一,不,如果它告诉你不刮!

如果你看一下http://www.google.com/robots.txt,你会清楚地看到这行:

Disallow: /search 

编辑(根据提问者的评论)

撇开对 'robots.txt' 的问题了那么,无论如何,使用更简单的网站你可能会更好。我建议使用一个不会经常更改的网站,以便您可以轻松地重现您的结果并验证所有内容都按照您的预期工作。

1

你应该看看Google's TOS。刮掉他们的搜索结果是不允许的。使用他们的搜索API。

0

如果你刮谷歌,你绝对必须使用代理,至少100 +。否则,他们会很容易地禁止你的IP地址。