我开始构建nodejs应用程序来从具有分页的站点中抓取数据。我写for循环来获取所有页面并推送所有url存储在一个数组中。在for循环中,我编写了async.eachSeries来逐个运行所有url,在完成运行后我想打印出成功消息。但我不知道如何将它们放在一起以使其正常工作。这是我的代码
for(var pageNo = 1; pageNo <=200; pageNo++){
siterequest('https://www...../en/jobs/?by=&in=&page='+pageNo, function(err, res, body){
if(!err && res.statusCode ==200){
var $ = cheerio.load(body);
var links = [];
$('.headline3.job-name-title > strong > a').each(function(i, elem){
links.push('https://www......com.kh/'+$(elem).attr('href'));
});
async.eachSeries(links, function(uri, next){
console.log('i will go this '+uri);
next();
}, function(callback){
console.log('I did it');
});
};
});
};
上面的代码对我不起作用。请帮我! 提前致谢
答案 0 :(得分:2)
当您使用async.js时,可以尝试async.times
而不是for loop
async.times(200, function (paneNo, nextPage) {
siterequest('https://www...../en/jobs/?by=&in=&page=' + (pageNo + 1),
function (err, res, body) {
if (!err && res.statusCode ==200) {
var $ = cheerio.load(body);
var links = [];
$('.headline3.job-name-title > strong > a').each(function (i, elem) {
links.push('https://www......com.kh/'+$(elem).attr('href'));
});
async.eachSeries(links, function (uri, next) {
console.log('i will go this '+ uri);
next();
}, function(callback) {
nextPage();
});
} else {
nextPage(err);
}
});
}, function(err) {
console.log('Done!');
});