使用 CURL PHP 执行 javascript 后获取 HTML 代码

Posted

技术标签:

【中文标题】使用 CURL PHP 执行 javascript 后获取 HTML 代码【英文标题】:Get HTML code after javascript execution using CURL PHP 【发布时间】:2012-10-18 19:45:35 【问题描述】:

我想使用Curl(php)获取由javascript生成的网页的html源代码 我尝试了 curl 但我只得到一个 javascript 代码:(

我可以使用 ruby​​ 来解决我的问题吗?!

【问题讨论】:

【参考方案1】:

这可以通过像 phantom js 这样的无头浏览器活动来完成,这是一种创建自己的逻辑的好方法,然后在控制台中为 php 获取结果数组,你可以在这里尝试活动 https://github.com/jonnnnyw/php-phantomjs 和 https://github.com/ariya/phantomjs

【讨论】:

【参考方案2】:

这是一个棘手的问题,因为必须运行 JavaScript 才能获得正确的代码。我想说的是在本地下载所有代码,然后在代码中添加一个ajax调用,这样它就可以在所有js运行后将源ajax返回给你。然后在浏览器中运行代码。

如果您需要多次执行此操作,您可以将这些需要加载到数据库中的页面排队并使用 php.ini 加载所有页面。然后,一旦 js 将代码 ajax 发送回服务器,它就可以刷新并将下一页从队列中拉出。

如果您需要我澄清任何事情,请告诉我。

【讨论】:

感谢您的解释 我可以使用 ruby​​ 或其他东西吗?!! 使用哪种服务器端语言并不是一个真正的问题。它不起作用的原因是因为 JavaScript 是一种客户端语言,所以它必须以一种或另一种方式在客户端运行,然后才能给你正确的答案。您可以考虑使用服务器端 javascript。【参考方案3】:

只需查看任何网络检查器工具(在 chrome 中只需 ctrl+shift+i)。在这里,您可以看到 javascript 在反映的页面上所做的更改。我不认为 curl 或任何类似 curl 的工具可以做到这一点。

【讨论】:

我可以使用其他语言或工具,例如 RUBY 吗?【参考方案4】:

浏览器执行 javascript 以生成 HTML。如果您使用 CURL 发出请求,它只会向您显示实际的 HTML 内容。在收到响应正文后,您需要一个 Javascript 引擎来处理 Javascript。

【讨论】:

看看这个问题,它可能会对你有所帮助。但是我很想知道你为什么要这样做,它很可能不是解决问题的正确方法:) ***.com/questions/10514604/… 10x 但是在收到响应正文后如何处理 javascript? 假设网站构建良好,不处理 javascript 就可以了。例如。谷歌机器人索引网络但不处理 javascript。此外,您应该确保您被允许使用该内容.. 感谢您的解释:D

以上是关于使用 CURL PHP 执行 javascript 后获取 HTML 代码的主要内容,如果未能解决你的问题,请参考以下文章

PHP Curl Timeout 导致 Javascript 客户端崩溃

从Javascript执行curl?

使用 PHP 执行 cURL 发送推送通知

curl 库是不是在页面内执行 javascript?

PHP 使用curl 执行远程服务器的一个shell脚本

php如何执行linux的curl指令