我正在尝试抓取我公司的网站,我想下载所有现有的图像到一个文件。我使用request.pipe()来做到这一点,但它给出了未处理的错误异常,这是我的代码。有什么问题吗?
$('a').each(function (index, a) {
var toQueueUrl = $(a).attr('href');
if(toQueueUrl.indexOf('.jpg') != -1){
jpgUrlArr.push(toQueueUrl.toString());
}
c.queue(toQueueUrl);
});
for(var i=0 ; i<jpgUrlArr.length; i++){
request(jpgUrlArr[i]).pipe(fs.createReadStream(imageStorageFolder + i + '.jpg'));
}
这里有两种情况:
- 当您尝试下载图像时未处理的异常。你需要在错误事件 上实现readStream
var readStream = request(jpgUrlArr[i])
readStream.on('error', function(err){
console.log(err)
})
readStream.pipe(fs.createReadStream(imageStorageFolder + i + '.jpg'))
- 你不能同时下载大量图片。有时会出现套接字错误。所以尽量限制异步图像加载。例如- async nodejs模块 代码:
var async = require('async')
var elements = $('a')
async.eachLimit(elements, 4, function(element){
// Downloading logic here
})