首頁  >  問答  >  主體

javascript - node 抓圖,圖片下載不完全

使用node request模組大量抓取圖片,但發現有些圖片下載的不完全,圖片一部分顯示正常,一部分是灰色的。
而且圖片下載不全也是隨機出現,不一定是哪一張。
程式碼如下:

var arr=["http:www.a.com/1.png","http:www.a.com/2.png","http:www.a.com/3.png"....]
for(var i=0;i<30;i++){
    lodPic(arr[i])
}
function loadPic(url){
    var _url=encodeURI(url);
    request.head(_url,function(err,res,body){
        if(err){
            console.log(err);
        }
        request(url).pipe(fs.createWriteStream(ph)).on('close',function(){
            console.log('finfish');
        });;
    });
}
迷茫迷茫2683 天前699

全部回覆(3)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-16 13:30:49

    var request = require('request');
    
    var options = {
      url: 'https://api.github.com/repos/request/request',
      headers: {
        'content-length': 1024,
      }
    };
    
    function callback(error, response, body) {
        //
    }
    
    request(options, callback);

    看程式碼,把content-length設定的再大一點試試,我之前用cpp寫靜態伺服器的時候遇到過,有的圖片比這個值要大,所以只有一半被傳輸成功。而有的圖片比這個值小,所以能傳輸完整。不知道你也是不是這個問題。

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 13:30:49

    可能 30 個並發寫入磁碟有點問題,題主試試減少並發數量?
    或試試 async.js 的 parallelLimit() ?

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-16 13:30:49

    http的HEAD方法是沒有回應主體的,你用這個http方法請求圖片肯定什麼都拿不倒。

    回覆
    0
  • 取消回覆