如何使用PHP中的phantomjs在下载的页面上执行Javascript?

时间:2013-02-07 15:26:13

标签: php javascript phantomjs

我正在使用“autobrowsing”脚本。我的脚本应该能够下载某些页面,然后解析这些页面以查找某些值,从而生成输出。服务器也需要身份验证。

我已经能够从PHP使用CURL lib获取这些页面,包括认证部分,但问题是这些页面的内容是在javascript函数中生成的,所以在用CURL函数下载它们之后,大部分内容因为没有执行JS代码而丢失了。

所以,我需要的是在执行JS之后的DOM 。我花了一些时间找出最好的方法,我不确定是否找到了它。无论如何它对我来说还不起作用,所以......

我所做的是在我的Linux机器上安装phantomjs,并尝试使用它来执行下载页面中的JS代码。所以,我使用CURL下载页面并将其保存为“test.html”文件,然后我执行“phantomjs test.html”,但我得到的是:

$ phantomjs test.html 
undefined:1 SyntaxError: Parse error

它没有做任何事情,就像被绞死一样。

test.html在脚本标记中包含html和JS代码,您知道,与其他所有常见的JS页面一样。

无论如何,为了确保它不是test.html的问题,我使用wget下载了google.com的index.html页面,并且我获得了相同的结果:

$ phantomjs index.html 
undefined:1 SyntaxError: Parse error

所以我总结说我一定做错了......

欢迎任何帮助。 : - )

贝斯茨,

1 个答案:

答案 0 :(得分:3)

phantomjs index.html无效的原因是因为您传入phantomjs的第一个参数是您要执行的phantomjs脚本,而不是html文件。我建议使用phantomjs直接打开网页,而不是将html文件传入其中。有很多如何做到这一点的例子,甚至可以看一下http://phantomjs.org/主页上的例子。有关更多高级功能,请参阅API。如果您有任何更具体的问题,请在此处询问。