【问题标题】:Screen Scraping a Fully Rendered Page屏幕抓取一个完全渲染的页面
【发布时间】:2011-02-28 22:04:41
【问题描述】:

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

一个例子是 Twitter 的状态页面,这是我在这个项目中遇到的许多问题之一:

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

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

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

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

谢谢!

【问题讨论】:

    标签: jquery ruby iframe screen-scraping


    【解决方案1】:

    ...没有一个可以捕获其元素由 AJAX 或事后呈现的页面。

    没错。您寻找的内容在捕获时不存在于文档中,它是作为浏览器处理 JavaScript 的结果插入的,它通过 AJAX 请求内容并将其插入到页面中。

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

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

    variations on Watir针对不同的浏览器,可以使用IE、Safari、Firefox等。

    【讨论】:

    • 我听说过 Watir,但从未完全了解过。我现在就这样做。谢谢!
    【解决方案2】:

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

    【讨论】:

    • 我以前没听说过。不过我一定会去看看的。
    【解决方案3】:

    我认为,如果您尝试抓取的数据是通过 Ajax 检索的,那么如果可能的话,您最好将目光瞄准那里。

    除此之外,API 的帮助很大(正如您所提到的)。有趣的是,这就是 Twitter 网站的运作方式,例如 like your example

    【讨论】:

      【解决方案4】:

      我自己一直在从事一个抓取项目,并且一直在使用 Celerity 并取得了相当大的成功。这里有一些资源应该会有所帮助。第二个链接专门针对 Ajax。

      开始使用:Celerity - Wiki Getting Started

      Ajax 专用:Celerity - Wiki (Ajax)

      祝你好运。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          您可以使用 IRobotSoft 网络爬虫获取 UpdatedPage。查看这些演示:http://irobotsoft.com/help/

          【讨论】:

            猜你喜欢
            • 2015-06-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-27
            • 2010-10-20
            • 1970-01-01
            • 1970-01-01
            • 2015-10-11
            相关资源
            最近更新 更多