0

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

我已经能够使用 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

所以我得出结论,我一定做错了什么......

欢迎任何帮助。:-)

最好的,

4

1 回答 1

3

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

于 2013-02-07T16:28:35.417 回答