【问题标题】:Capture JavaScript generated content捕获 JavaScript 生成的内容
【发布时间】:2013-08-08 04:35:39
【问题描述】:

网页使用 JavaScript 将内容放在页面上,所以我得到了纯 HTML,页面上没有数据。我需要的东西不仅能读取 HTML,还能执行 JavaScript 并将其应用于 DOM,然后才以 HTML 文本的形式返回结果。

任务与this question 中的完全相同,但我正在寻找.NET 的解决方案。

【问题讨论】:

  • 如果您想要 javascript 生成的内容,那么您需要一个浏览器引擎来实际“运行”页面,然后您可以检查生成的 DOM。
  • @jfriend00 好吧,这显然是解决方案,但我正在寻找类似 @​​987654322@ 的东西(Java 中类似任务的解决方案)

标签: javascript .net html-parsing


【解决方案1】:

如果您在 .NET 中找到类似的东西,我会感到惊讶。我会使用PhantomJS 打开页面并与DOM 交互。它是一个高度可编写脚本的无头 WebKit 浏览器,可以轻松完成您想要的工作。示例见How to print html source to console with phantomjs

var page = require('webpage').create();
page.open('http://google.com', function () {
    console.log(page.content);
    phantom.exit();
});

您必须安装 PhantomJS,然后启动一个单独的进程来运行您的脚本,但 PhantomJS 可能会比您为 .NET 编写的任何东西做得更好。

【讨论】:

  • 我会更深入地研究它,但到目前为止我无法得到我想要的东西。示例中的代码仍然返回纯 html。我想我的特定站点的问题比我想象的要复杂。数据是在 AJAX 请求中下载的,当然 PhantomJS 没有捕捉到这一点。我认为只查看 AJAX 调用并直接使用它们会更容易。无论如何,谢谢,PhantomJS 是一个很好的工具,也许其他时候它会对我有用。
  • PhantomJS 执行所有 AJAX 调用并具有检查这些请求的机制(请参阅onResourceRequested)。但是,如果您感兴趣的所有数据都在 AJAX 请求中,那么最好像您说的那样,自己从您的程序中发出 HTTP 请求。
  • 我想我会接受 whis 作为答案,因为它与问题相关,而且没有人提出更好的解决方案。
猜你喜欢
  • 2020-07-08
  • 2010-12-30
  • 2016-10-27
  • 2014-05-22
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
相关资源
最近更新 更多