注意,我已经看过了:
Understanding the evaluate function in CasperJS
我正在尝试编写一个简单的网络抓取工具,以便在我教授的网页上下载所有pdf。
这是我的代码:
var casper = require('casper').create({verbose: true , logLevel: "debug" });
var url = "https://www.cs.rit.edu/~ib/Classes/CSCI264_Fall16-17/assignments.html";
casper.start(url);
var elements;
try {
casper.then(function(){
try {
// statements
elements = this.evaluate(function(){ return __utils__.findAll('body ul li a'); });
console.log("elements: " + elements);
console.log(this.getCurrentUrl());
} catch(e) {
// statements
console.log(e);
}
});
} catch(e) {
console.log(e);
}
casper.run();
返回的elements
数组大小始终为零,但是当我放入
__utils__.echo(__utils__.findAll('body ul li a').length);
我获得了正确数量的链接。
这是因为evaluate函数不会返回一个元素数组吗?
任何帮助将不胜感激。
答案 0 :(得分:1)
使用原生js方法代替casperjs提供的__utils__
,例如:
elements = this.evaluate(function(){ return document.querySelectorAll('body ul li a'); });
我不确定为什么findAll
无效。