2015-10-16 784 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

    我來試試你的答案和更新的問題。謝謝。 –