这又一次让我对http.request产生质疑
//====================================================== // 喜爱123四年级上英语MP3下载爬虫1.00 // 2018年5月10日 //====================================================== var http=require("http"); // http模块 var https=require("https"); // https模块 var zlib = require('zlib'); // 用于解析gzip网页 var fs=require('fs'); // 文件处理模块 var iconv = require('iconv-lite'); // 用于转码。 var cheerio = require("cheerio"); // 用于从HTML中以类似jquery方式查找目标 //-------------------------------------- // 下载单个mp3 //-------------------------------------- function downloadMp3(url){ console.log("mp3:"+url+"下载开始"); // 得到hostname,path和port var currUrl=url.replace("http://",""); var pos=currUrl.indexOf("/"); var hostname=currUrl.slice(0,pos); var path=currUrl.slice(pos); // 有端口加端口,没有端口默认80 var port=80; if(hostname.indexOf(":")!=-1){ var arr=hostname.split(":"); hostname=arr[0]; port=arr[1]; } var name=url.slice(url.lastIndexOf("/")); // 初始化options options={ hostname:hostname, port:port, path:path, method:'GET', /* headers:{ 'Referer':'https://www.nvshens.com', },*/ // 有需要再打开 }; req=http.request(options,function(resp){ var imgData = ""; resp.setEncoding("binary"); resp.on('data',function(chunk){ imgData+=chunk; }); resp.on('end',function(){ // 创建文件 var fileName="./"+name; fs.writeFile(fileName, imgData, "binary", function(err){ if(err){ console.log("[downloadPic]文件 "+fileName+" 下载失败."); console.log(err); }else{ console.log("文件"+fileName+"下载成功"); } }); }); }); // 超时处理 req.setTimeout(7500,function(){ req.abort(); }); // 出错处理 req.on('error',function(err){ if(err){ console.log('[downloadMp3]文件 '+url+" 下载失败,"+'因为'+err); } }); // 请求结束 req.end(); } //------------------------------- // 入口函数 //------------------------------- function main(){ var profix='http://ting.xiai123.com/mp3/kewen/wysyy4s/Module0'; var appendixs=['Unit1','Unit2','Words']; for(var i=1;i<10;i++){ for(var j=0;j<appendixs.length;j++){ var url=profix+i+'_'+appendixs[j]+".mp3"; downloadMp3(url); } } //downloadMp3('http://ting.xiai123.com/mp3/kewen/wysyy4s/Module01_Unit2.mp3'); } // 开始 main();
2018年5月10日13点44分