cURL PHP - 加载完整页面

5

我目前正在尝试通过cURL加载一个HTML页面,我可以检索到HTML内容,但部分内容是通过脚本(AJAX POST)后期加载的。我无法恢复HTML部分(这是一个表格)。

是否有可能完全加载页面?

谢谢您的回答。


我不相信curl有能力在检索HTML内容时执行JavaScript。 - David
我认为这是不可能的,因为Ajax是JavaScript的一部分,需要由Web浏览器或类似的工具进行分析和运行。 - Rachel Geller
2个回答

3

不,你不能这样做。

CURL仅从URL下载文件 - 它不关心它是HTML、Javascript、图像、电子表格还是任何其他任意数据;它只是下载。它不运行任何东西,也不解析任何东西或显示任何东西,它只是下载。

你要求的不仅仅是这个。你需要下载,将结果解析为HTML,然后运行一些Javascript来下载其他东西,然后运行更多的Javascript将结果解析为更多的HTML并将其插入到原始HTML中。

基本上,你要找的是一个完整的Web浏览器,而不是CURL。

由于你的目标涉及“运行一些Javascript代码”,很明显没有可用的Javascript解释器是无法实现的。这意味着它显然无法在PHP程序中工作(*)。你需要超越PHP。你需要一个浏览器。

我建议的解决方案是使用一个非常专业的浏览器PhantomJS。这实际上是一个完整的Webkit浏览器,但没有用户界面。它专门用于自动化测试网站和其他类似任务。您的要求非常适合它:编写脚本使PhantomJS打开您的URL,等待表格完成渲染,并获取完成的HTML代码。
您需要在服务器上安装PhantomJS,然后使用像this one这样的库从您的PHP代码中控制它。
希望能对您有所帮助。
(*)是的,我知道提供JS解释器的PHP扩展程序,它可以提供解决问题的方法,但它是实验性的、未完成的,仍然很难作为解决方案实现,而且我认为这不是一个特别好的想法,所以让我们不考虑它来回答这个问题。

0
不,你唯一能做到的方法是先进行一个单独的curl请求来获取ajax请求的结果,然后将这两个结果合并在一起。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接