使用PhantomJs和CasperJs注入JavaScript

Mar*_*rco 9 javascript web-scraping phantomjs casperjs

我正在尝试使用CasperJS来抓取一个拥有动态内容并且到目前为止失败的网站.该网站使用几个js库(例如Prototype)来使用自动完成来创建内容.因此,我试图插入一些值并触发事件以引发内容创建.插入和触发事件可以正常工作,但不会创建任何内容.

我是CasperJS的新手,发现它与库的相对路径有问题.我怀疑我的问题来自于在我的页面环境中没有正确加载的库.因此我试着injectJs像这样注射它们

// ...创建casper并做一些其他的事情

casper.then(function(){

this.echo(this.page.injectJs('http://www.my-website.com/path/to/js1'));
this.echo(this.page.injectJs('http://www.my-website.com/path/to/js2'));

 });
Run Code Online (Sandbox Code Playgroud)

不幸的是,这两个函数都返回false.脚本的路径是正确的,在哪里可能是这个问题的根源?

非常感谢您的帮助.

sco*_*kel 4

我不相信 CasperJS 可以处理注入脚本的 HTTP 请求。这很奇怪,因为他们实际上在包含 jQuery 的常见问题解答中展示了这一点。然而,同一个常见问题解答如下:

您无法使用 HTTP 协议注入脚本,实际上必须使用脚本资源的相对/绝对文件系统路径。

为了再次检查,我自己使用 Mac OS X 和上面的代码进行了尝试。echo 的结果是false通过 http 使用文件以及true本地文件时的结果。

  • 作为记录,我已经相应地更新了文档,对于这个错误深表歉意。 (3认同)