9

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

我是 CasperJS 的新手,发现它与库的相对路径存在问题。我怀疑我的问题是由于在我的页面环境中没有正确加载库引起的。因此,我尝试injectJs像这样使用注入它们

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

casper.then(函数(){

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。脚本的路径是正确的,还有哪里可能是这个问题的根源?

非常感谢您的帮助。

4

2 回答 2

4

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

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

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

于 2012-06-28T04:10:50.470 回答
1

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

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

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

于 2017-06-13T09:51:58.003 回答