2012-07-10 73 views
0

我有一个小脚本,使用JavaScript从其他站点拉HTML。如何在PHP中包含动态JavaScript页面的静态HTML结果?

我希望包括获取一个PHP页面,而不出现在被显示的最终PHP页面的JavaScript代码的任何拉静态HTML。

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

那么我该怎么做呢?

回答

1

您将需要抓取网页,在它执行JavaScript,然后提取你从生成的DOM想要的数据。

通常的做法,这是使用Web自动化工具如Selenium

0

你根本做不到。

你要明白,PHP和JavaScript在不同的地方,PHP服务器和客户端的JavaScript上运行。

你唯一的解决办法是改变这一切做的方式,并使用“的file_get_contents(URL)”,从PHP让你的JavaScript中使用,以获得相同的内容。这样,就再也没有JavaScript了,你仍然可以用遥远的内容预处理你的页面。

+0

谢谢,我尝试使用“file_get_contents”而不是“include”来使用Javascript获取页面,但它没有获取任何内容。有任何想法吗? – ProgrammerGirl 2012-07-10 12:33:39

+0

Mathieu指出:“并使用PHP中的file_get_contents(url)”......这不是javascript,它是PHP,你必须使用这个函数来获取文件或url的内容并将其放入php变量... – 2012-07-10 12:34:50

0

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

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

你也可以使用真实的浏览器,但当然你不需要用户界面,它可能会阻碍你想要做的事情,所以无头浏览器可能会更好。

这种事情通常会被用于网站的自动化测试(即功能测试)。

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

希望有所帮助。