//====================================================== // www.nvshens.com图片批量下载Node.js爬虫1.00 // 此程序与meitulu爬虫类似,先写个架子在这里 // 2017年11月9日 //====================================================== // 内置https模块 var https=require("https"); // 内置文件处理模块,用于创建目录和图片文件 var fs=require('fs'); // 请求参数JSON。http和https都有使用 var options; // request请求 var req; // https://img.onvshen.com:85/gallery/11519/11602/0.jpg' //-------------------------------------- // 下载图片 // folder:图片所在url的一级目录 // subfolder:图片所在url的二级目录 // pinctureIndex:图片序号 //-------------------------------------- function downloadPic(folder,subfolder,pinctureIndex){ console.log("图片:"+pinctureIndex+"下载开始"); // 初始化options options={ hostname:'img.onvshen.com', port:85, path:'/gallery/'+folder+"/"+subfolder+"/"+pinctureIndex+'.jpg',// 子路径 method:'GET', }; req=https.request(options,function(resp){ var imgData = ""; resp.setEncoding("binary"); resp.on('data',function(chunk){ imgData+=chunk; }); resp.on('end',function(){ // 创建目录 fs.mkdir('./'+subfolder,function(err){ if(err){ console.log("目录"+folder+"已经存在"); } }); // 创建文件 var fileName="./"+subfolder+"/"+pinctureIndex+".jpg"; fs.writeFile(fileName, imgData, "binary", function(err){ if(err){ console.log("文件"+fileName+"下载失败."); console.log(err); }else{ console.log("文件"+fileName+"下载成功"); } }); }); }); // 超时处理 req.setTimeout(5000,function(){ req.abort(); }); // 出错处理 req.on('error',function(err){ if(err.code=="ECONNRESET"){ console.log('[downloadPic]socket端口连接超时。'); console.log(err); }else{ console.log('[downloadPic]请求发生错误,err.code:'+err.code); console.log(err); } }); // 请求结束 req.end(); } /* 左边自动补零 质朴长存法 by lifesinger */ function pad(num, n) { var len = num.toString().length; while(len < n) { num = "0" + num; len++; } return num; } // 下载一批 function start(){ for(var i=1;i<55;i++){ var fileName=pad(i,3); downloadPic('11519','11602',fileName); } } // 调用start函数,程序开始 start();