Request.pipe()未处理错误异常Nodejs
问题描述:
我试图抓取我公司的网站,我想将所有现有图像下载到文件中。我使用request.pipe()来做到这一点,但它给出了未处理的错误异常,这里是我的代码。可能是什么问题?Request.pipe()未处理错误异常Nodejs
$('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
})
我来试试你的答案和更新的问题。谢谢。 –