我有一个小脚本,它使用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程序中运行这些类型的脚本。它旨在编写测试脚本,但我想您可以将其用于自己的目的。
希望能有所帮助。