以下代码有些冗余,大家捡核心看就好。
// 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // cheerio模块,提供了类似jQuery的功能 var cheerio = require("cheerio"); // 内置文件处理模块 var fs=require('fs'); // 请求参数JSON var options; // 请求并获得数据 var req; // 存储页码 var index=4; function downloadImg(pageNumber){ console.log("开始读取第"+pageNumber+"页"); // http://images2017.cnblogs.com/blog/162475/201709/162475-20170929115047356-360094413.png // 实际图片地址 options={ hostname:'images2017.cnblogs.com',// 这里别加http://,否则会出现ENOTFOUND错误 port:80, path:'/blog/162475/201709/162475-20170929115047356-360094413.png',// 子路径 method:'GET', }; req=http.request(options,function(resp){ var imgData = ""; resp.setEncoding("binary"); resp.on('data',function(chunk){ imgData+=chunk; }); resp.on('end',function(){ fs.writeFile("162475-20170929115047356-360094413.png", imgData, "binary", function(err){ if(err){ console.log("文件下载失败."); } console.log("下载成功"); }); }); }); // 超时处理 req.setTimeout(5000,function(){ req.abort(); }); // 出错处理 req.on('error',function(err){ if(err.code=="ECONNRESET"){ console.log('socket端口连接超时。'); }else{ console.log('请求发生错误,err.code:'+err.code); } }); // 请求结束 req.end(); } // 包一层函数 function start(i){ downloadImg(i); } // 开始遍历 start(index);
2017年9月30日10:31:31