如何在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程序中运行这些类型的脚本。它旨在编写测试脚本,但我想您可以将其用于自己的目的。
希望能有所帮助。
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 如何处理10页以上的静态页眉/页脚
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- Grunt-connect在根目录之外提供静态文件
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 来自文档或下一个静态父级的事件委派
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- webpack代码拆分了handlerbs文件——结果是文件很大
- JavaScript循环无法正确计算/显示结果
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 如何在PHP中包含动态Javascript页面的静态HTML结果
- 为什么我要静态的NodeList/HTMLCollection而不是live呢?NodeList,如果我不需要在结果列表
- 如何将 JavaScript 结果添加到静态 HTML href 属性
- 浏览器在页面上按ctrl+f查找显示静态标题后面的结果