如何在PHP中包含动态Javascript页面的静态HTML结果


How to include the static HTML results of a dynamic Javascript page in PHP?

我有一个小脚本,它使用Javascript从另一个站点提取HTML。

我想包括在PHP页面中提取的静态HTML,而不会在最终显示的PHP页面中出现任何Javascript代码。

我尝试在PHP页面中使用Javascript代码来包含该文件,但它只包含实际的Javascript,而不包含Javascript的结果

那么我该怎么做呢?

您需要获取页面,执行其中的JavaScript,然后从生成的DOM中提取所需的数据。

通常的方法是使用诸如Selenium之类的web自动化工具。

你根本做不到。

您需要了解PHP和Javascript在不同的地方运行,PHP在服务器上运行,Javascript在客户端上运行。

您唯一的解决方案是更改所有这些操作的方式,并使用PHP中的"file_get_contents(url)"来获得与javascript曾经获得的内容相同的内容。这样,就不再有javascript了,您仍然可以预处理带有远程内容的页面。

由于需要运行Javascript代码,因此无法直接从PHP中执行此操作。

我建议将URL(以及任何必要的操作,如点击事件等)传递给无头浏览器,如Phantom或Zombie,并在JS引擎完成工作后从中捕获DOM。

你也可以使用真正的浏览器,但当然你不需要UI,而且它可能会阻碍你的工作,所以无头浏览器可能会更好。

这种东西通常用于网站的自动测试(即功能测试)。

有一个名为Mink的PHP工具,它可以在PHP程序中运行这些类型的脚本。它旨在编写测试脚本,但我想您可以将其用于自己的目的。

希望能有所帮助。