request爬虫设置代理,总是报错求助
发布于 7 年前 作者 ooooevan 3333 次浏览 来自 问答

我想用代理来爬取资源,用了async模块,request模块。

function download(item,cb){
  request({
    url:item.img,
    proxy:proxys[Math.random()*proxys.length|0],
    method:'GET',
    timeout:5000
  },function(err,response,body){
    if(response && response.statusCode == 200){
      cb(null,item);
    }
  }).on('error',function(){
    console.log('下载出现异常,可能是pipe有问题,再次请求...');
    download(item,cb);
    // cb(null,item);
  }).pipe(fs.createWriteStream(fileDir2+item.name+'.'+item.url_token+'.jpg'));
}

download(item,cb) ,cb是async中控制流程的回调函数:

async.eachLimit(items,10,function(item,cb){
	download(item,cb);
},function(){...})

每次下载没几个,就报错停止运行了:

  throw new assert.AssertionError({
  ^
AssertionError: 258 == 0
    at ClientRequest.onConnect (C:\Users\fox\WebstormProjects\nodejs\实战\爬虫\node_modules\tunnel-agent\index.js:160:14)

如果我去掉代理的请求头,一点事都没有;如果我把上面download里面,改成 不再继续请求,直接cb(),请求失败不会报错。

    console.log('下载出现异常,可能是pipe有问题,再次请求...');
     // download(item,cb);
   cb(null,item);```

请大佬看了,能不能帮我解决一下,想了很久,一直排错,不知道什么原因。
回到顶部