2015-10-16 93 views
0

我试图抓取我公司的网站,我想将所有现有图像下载到文件中。我使用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')); 
     } 

回答

2

两种情况在这里:

  1. 未处理的异常,而你尝试下载图像。您需要实现对错误事件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 
    }) 
    
    +0

    我来试试你的答案和更新的问题。谢谢。 –