屏幕刮擦完全渲染的页面

时间:2011-02-28 22:04:42

标签: jquery ruby iframe screen-scraping

我正在试图弄清楚如何捕获完全渲染的页面并对其进行操作。我一直在使用Nokogiri,Hpricot,Mechanize等,但是没有人可以捕获一个页面,其元素由AJAX或事后其他东西呈现。

一个例子是Twitter的状态页面,这是我遇到的很多项目之一,我遇到了麻烦:

http://twitter.com/#!/nytimes/status/42341419062525952

http://twitter.com/#!/alleyinsider/status/42337897038364672

如果您查看HTML源代码,它主要是javascript,以后会显示。在Firebug或其他控制台中检查它,您会看到完全渲染的结果,但我不知道如何使用上述工具捕获它。我错过了什么吗?

顺便说一句:是的,我知道有一个Twitter API。但这更像是一个理论问题,因为我在其他一些网站上有不同程度的影响。

谢谢!

7 个答案:

答案 0 :(得分:5)

  

... none无法捕获其元素由AJAX或事后其他内容呈现的页面。

这是正确的。您搜索的内容在捕获时不存在于文档中,它是由浏览器处理JavaScript而插入的,JavaScript通过AJAX请求内容并将其插入到页面中。

因此,要想到达目的地,您需要一个JavaScript解释器或代码控制下的浏览器。

Watir项目能够做到这一点。它就像是Mechanize之上的下一步,除了不是Ruby代码,它是一个浏览器被告知你的Ruby代码要做什么。因此,浏览器应该能够加载页面,处理JavaScript,然后拉入您正在寻找的内容。

不同浏览器有variations on Watir,因此您可以使用IE,Safari,Firefox等。

答案 1 :(得分:0)

你试过WebDriver吗?它在浏览器(真实或虚拟)中加载整个页面,您可以浏览页面的DOM,如果要修改页面,可以将javascript命令传递给它。

答案 2 :(得分:0)

我认为如果你试图通过Ajax检索的数据是那么,如果可能的话,你最好把目光瞄准那里。

除此之外,API的帮助很大(正如你所提到的)。有趣的是,看起来这就是Twitter网站的工作原理like your example

答案 3 :(得分:0)

我自己一直在做一个抓取项目,并且一直在使用Celerity取得了相当不错的成功。以下是一些应该有用的资源。第二个链接专门针对Ajax。

使用入门:Celerity - Wiki Getting Started

特定于Ajax:Celerity - Wiki (Ajax)

祝你好运。

答案 4 :(得分:0)

如果您是runnign java,您可能需要查看 lobo browser ,您可以通过代码实例化并呈现页面。 http://lobobrowser.org/java-browser.jsp。我曾经试过这个,但后来放弃了没有ajax内容的更简单的解决方案。

答案 5 :(得分:0)

您可以使用IRobotSoft网络抓取工具并获取UpdatedPage。请查看以下演示:http://irobotsoft.com/help/

答案 6 :(得分:0)

iMacros非常适合 使用web scraping工具。您可以在IE,Firefox和Chrome中运行抓取代码。有免费和商业版本。我喜欢它适用于任何类型的网站,甚至Flash小程序。