我现在正在使用casperjs进行网页抓取。几乎一切都很好,但我遇到了一些麻烦。首先,我的代码如下所示。
casper.start().each(SOME_URLS, function(self, URL) {
self.thenOpen(URL, function() {
self.then(function() {
var getDatas = function() {
var title = $('SOME_SELECTOR').map(function() {
return $(this).text();
}).get();
return {
title: title
};
}
data = self.evaluate(getDatas);
console.log(JSON.stringify(data));
});
});
}).run();
我想从网页获取一些数据到'数据'变量。有时数据非常好(在console.log上),但有时数据是空的!
为什么会这样?我错了什么?
答案 0 :(得分:0)
问题是您不能多次拨打casper.start
。您的循环需要在casper.start
函数内或casper.then
请参阅此excellent SO answer以帮助您完成此操作。
基本上只需拨打casper.start
一次,然后将您的循环放入casper.then