我需要找到一种方法来编写一个程序(以任何语言),该程序将连接到一个网站并从该网站读取动态生成的数据。
请注意,它是动态生成的——仅获取源 html 是不够的,因为我感兴趣的数据是通过引用后端代码的 javascript 生成的。所以当我查看网页源时,我看不到数据。(例如,去谷歌搜索。在搜索结果页面上查看源代码。您的浏览器显示的数据很少反映在源代码中——大部分是动态生成的。我需要一些方法访问此数据。)
我需要找到一种方法来编写一个程序(以任何语言),该程序将连接到一个网站并从该网站读取动态生成的数据。
请注意,它是动态生成的——仅获取源 html 是不够的,因为我感兴趣的数据是通过引用后端代码的 javascript 生成的。所以当我查看网页源时,我看不到数据。(例如,去谷歌搜索。在搜索结果页面上查看源代码。您的浏览器显示的数据很少反映在源代码中——大部分是动态生成的。我需要一些方法访问此数据。)
选择包含 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
我曾经有一个 Perl 程序来访问 Mapguide.com 以获取从一个位置到另一个位置的行车方向。我解析了返回的页面并保存到数据库。如果源从不改变它们的格式,那没关系。问题是源格式经常改变,你的解析器也需要改变。
一个简单的想法:如果我们谈论的是 AJAX,您可以查找动态数据的 url。然后你可以使用你正在谈论的页面上的 javascript 重新格式化它。
如果你有 Firefox/greasemonkey 制作一个 DOM 转储器应该是一件简单的事情。