仅使用几个URL即可很好地工作,但是我尝试爬网的次数越多,每个URL花费的时间就越长。该文件包含约145个URL。如果我尝试对所有这些爬网,该程序将停止响应约135个屏幕截图站点。我认为这与Node的异步特性有关,但是我不知道如何解决。
这就是我得到的:
const fs = require('fs');
const webshot = require('webshot');
let jsonData = fs.readFileSync('./data.json');
let jsonDataParsed = JSON.parse(jsonData);
let number = 1;
let options = {
quality: 25,}
jsonDataParsed.forEach((element) => {
let url = element.link;
let title = element.veranstalter;
let randomNumber = (Math.round(Math.random() * 1000000)).toString();
let picName = './webshotpics/'+ title + '-'+ randomNumber+'.jpg';
webshot(url,picName,options,function(err) {
console.log('Tried Webshot ' + number);
console.log(picName);
console.log(number);
console.log(url);
number++;
if (err) {
console.log('Error at number ' + number );
console.log('Error name: ' + picName );
console.log('Error link: ' + url );
}
});
});