Request.pipe()未处理错误异常Nodejs

时间:2015-10-16 08:47:15

标签: node.js request fs

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

1 个答案:

答案 0 :(得分:2)

这里有两个案例:

  1. 尝试下载图片时出现未处理的异常。您需要在错误事件
  2. 上实现readStream

    代码:

    var readStream = request(jpgUrlArr[i])
    readStream.on('error', function(err){
        console.log(err)
    })
    
    readStream.pipe(fs.createReadStream(imageStorageFolder + i + '.jpg'))
    
    1. 您无法同时下载大量图片。有时你会遇到套接字错误。因此,尝试限制异步图像加载。例如 - async nodejs module
    2. 代码:

      var async = require('async')
      var elements = $('a')
      
      async.eachLimit(elements, 4, function(element){
          // Downloading logic here
      })