如何使用PHP中的phatomjs在下载页面上执行Javascript?
我在一个“自动浏览”的脚本中工作。我的脚本应该能够下载某些页面,然后解析这些页面以查找某些值,从而生成输出。服务器也需要身份验证 我已经能够使用PHP中的CURL lib获得这些页面,包括身份验证部分,但问题是这些页面的内容是在javascript函数中生成的,所以在使用CURL函数下载它们之后,大部分内容都丢失了,因为JS代码没有执行 所以,我需要的是执行JS后的DOM。我花了一些时间来找出解决这个问题的最佳方法,但我不确定是否找到了。不管怎么说,它对我还不起作用,所以 我所做的是在我的Linux机器上安装phantomjs,并尝试使用它来执行下载页面中的JS代码。因此,我使用CURL下载页面并将其保存为“test.html”文件,然后执行“phantomjs test.html”,但我得到的只是以下内容:如何使用PHP中的phatomjs在下载页面上执行Javascript?,php,javascript,phantomjs,Php,Javascript,Phantomjs,我在一个“自动浏览”的脚本中工作。我的脚本应该能够下载某些页面,然后解析这些页面以查找某些值,从而生成输出。服务器也需要身份验证 我已经能够使用PHP中的CURL lib获得这些页面,包括身份验证部分,但问题是这些页面的内容是在javascript函数中生成的,所以在使用CURL函数下载它们之后,大部分内容都丢失了,因为JS代码没有执行 所以,我需要的是执行JS后的DOM。我花了一些时间来找出解决这个问题的最佳方法,但我不确定是否找到了。不管怎么说,它对我还不起作用,所以 我所做的是在我的Lin
$ phantomjs test.html
undefined:1 SyntaxError: Parse error
它什么也没做,就像被吊死一样
html在脚本标记中同时包含html和JS代码,就像其他常见的JS网页一样
无论如何,为了确保test.html没有问题,我用wget下载了google.com的index.html页面,得到了相同的结果:
$ phantomjs index.html
undefined:1 SyntaxError: Parse error
所以我断定我一定是做错了什么
欢迎任何帮助。:-)
最好,之所以
phantomjs index.html
不起作用,是因为传递到phantomjs的第一个参数是希望执行的phantomjs脚本,而不是html文件。我建议使用phantomjs直接打开网页,而不是将html文件传递给它。有相当多的例子说明了如何做到这一点,甚至可以看看的主页上的一个。有关更高级的功能,请参阅。如果您有任何更具体的问题,请在此处提问。原因是phantomjs index.html
不起作用,因为您传递到phantomjs的第一个参数是您希望执行的phantomjs脚本,而不是html文件。我建议使用phantomjs直接打开网页,而不是将html文件传递给它。有相当多的例子说明了如何做到这一点,甚至可以看看的主页上的一个。有关更高级的功能,请参阅。如果您有任何更具体的问题,请在此处提问。我需要在每个HTTP服务器请求中发送一些标题,以执行身份验证,从而获得需要解析的每个页面,这就是我在下载页面之前下载该页面的原因,而不是将URL传递给phantomjs。@Fran-phantomjs还允许您修改标题,您可以将它们传递到phantomjs脚本中,因为paramsWill将尽快查看该脚本。不管怎样,我正在考虑放弃这项计划,它所花费的时间和精力对我来说太多了。你可能是对的。另一方面,我使用PhantomJS来抓取网页为自己节省了大量时间,因为它使操作和遍历domI变得非常容易。我需要在每个HTTP服务器请求中发送一些头来执行身份验证,以获取我需要解析的每个页面,这就是我之前下载页面而不是将URL传递给phantomjs的原因。@Fran-phantomjs还允许您修改标题,您可以将这些标题传递到phantomjs脚本中,因为paramsWill会尽快查看这些标题。不管怎样,我正在考虑放弃这项计划,它所花费的时间和精力对我来说太多了。你可能是对的。另一方面,我使用PhantomJS来抓取网页为自己节省了大量时间,因为它使操作和遍历dom变得非常容易