如下代碼有些冗餘,你們撿核心看就好。服務器
// 內置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:31socket