使用PhantomJs和CasperJs注入JavaScript

时间:2012-06-28 03:18:49

标签: 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'));

 });

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

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

我不相信CasperJS可以处理注入脚本的HTTP请求。这很奇怪,因为他们实际上显示了这个in their FAQ on including jQuery。但是,同样的常见问题解答如下:

  

您实际上不能使用HTTP协议注入脚本   使用脚本资源的相对/绝对文件系统路径。

为了仔细检查,我自己尝试使用Mac OS X和上面的代码。当使用http和false文件时,echo的结果为true

答案 1 :(得分:1)

这就是我在Casperjs脚本中注入Jquery的方法

casper.options.clientScripts = ["jquery-3.2.1.min.js"]

Jquery文件应位于casperjs脚本存在的同一目录