【问题标题】:how to read/parse dynamically generated web content?如何读取/解析动态生成的网页内容?
【发布时间】:2009-10-21 12:04:50
【问题描述】:

我需要找到一种方法来编写一个程序(用任何语言),该程序将连接到一个网站并从该网站读取动态生成的数据。

请注意,它是动态生成的——仅获取源 html 是不够的,因为我感兴趣的数据是通过引用后端代码的 javascript 生成的。所以当我查看网页源时,我看不到数据。 (例如,去谷歌搜索。在搜索结果页面上查看源代码。您的浏览器显示的数据很少反映在源代码中——大部分是动态生成的。我需要一些方法访问这些数据。)

【问题讨论】:

    标签: dynamic data-generation


    【解决方案1】:

    选择包含 HTML 渲染器的语言和环境(例如 .NET 和 WebBrowser 控件)。使用 HTML 渲染器获取 URL 并在内存中生成 HTML DOM(确保启用脚本)。渲染器完成工作后读取 HTML DOM 的内容。

    示例(您需要在 System.Windows.Form 派生类中执行此操作):

    WebBrowser browser = new WebBrowser();
    browser.Navigate("http://www.google.com");
    HtmlDocument document = browser.Document;
    // extract what you want from the document
    

    【讨论】:

      【解决方案2】:

      我曾经有一个 Perl 程序来访问 Mapguide.com 以获取从一个位置到另一个位置的行车路线。我解析了返回的页面并保存到数据库。如果源从不改变它们的格式,那没关系。问题是源格式经常改变,你的解析器也需要改变。

      【讨论】:

        【解决方案3】:

        一个简单的想法:如果我们谈论的是 AJAX,您可以查找动态数据的 url。然后您可以使用您正在讨论的页面上的 javascript 重新格式化它。

        【讨论】:

          【解决方案4】:

          如果你有 Firefox/greasemonkey,制作一个 DOM 转储器应该是一件简单的事情。

          【讨论】:

            猜你喜欢
            • 2012-08-19
            • 1970-01-01
            • 2010-12-23
            • 2011-08-16
            • 2018-12-16
            • 1970-01-01
            • 2013-06-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多