【问题标题】:Force content generated by javascript to reveal itself强制 javascript 生成的内容显示自己
【发布时间】:2011-01-31 04:17:18
【问题描述】:

我正在通过 API 生成一些内容,由 javascript 访问,但我无法获取浏览器上清楚显示的内容的源代码(加载后)。我可以突出显示文本并查看所选文本的来源(这是 firefox 的一项功能),但我将使用 CURL 通过 php 自动捕获数据...如何捕获数据?有没有办法更新源(可能通过 DOM 更新)所以它显示一些如何?任何帮助表示赞赏。

【问题讨论】:

  • 有很多工具可以让您调试和检查源代码,这完全取决于您使用的浏览器
  • 对不起,令人困惑的问题。您有一个使用 Javascript 生成一些内容的页面,并且您希望在通过 cURL 获取页面时看到动态生成的内容?
  • 是的,所以我不需要任何手动显示技术。我需要 javascript 或 jquery 解决方案。
  • 您不能使用 JavaScript 或 jQuery 解决方案——您使用的是 PHP/Curl,而不是带有嵌入式 JavaScript 引擎的 Web 浏览器。

标签: php javascript curl


【解决方案1】:

您不能只请求一些 HTML 源代码并期望在不运行 JS 的情况下使用 JS 修改它的结果就位,所以如果您想在 PHP 中获取内容,那么您将不得不这样做

  1. 通过将执行 JavaScript 的东西推送 HTML(如果我使用 Perl,我可能会查看 WWW::Mechanize::Firefox,它使用 Mozrepl。我不知道 PHP 是否有类似的好 API)
  2. 对 JavaScript 进行逆向工程,并尽其所能自行获取数据。

【讨论】:

    【解决方案2】:

    您可以使用 Google Chrome 从开发人员工具中提取页面源代码(右上角的扳手 -> 工具 -> 开发人员工具,或 Control+Shift+I(即大写的 i))。开发者工具中显示的源代码代表页面的最新源代码,包括页面初始加载后由 JavaScript 动态生成的内容。

    我确信其他浏览器也有类似的功能,我只是碰巧知道 Chrome 的方法。

    【讨论】:

    • 从 webkit 和 V8 中分叉出必要的部分并编译它。换句话说,最简单的方法是为不支持 JS 的东西提供“预渲染”回退。
    【解决方案3】:

    如果你的开发环境是 Linux/Unix,你可以加入PjantonJS,这是一个非常漂亮的工具,可以执行 JavaScript 并传递输出。我建议这样做的方式是在你运行 CLI PhantomJS 的女巫中使用 shell_exec()

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2020-08-14
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2021-03-17
      相关资源
      最近更新 更多