网站建设专有名词,高层建筑信息平台,在线seo优化工具,国内国际新闻最新消息10条这个爬虫在abaike爬虫的基础上改改图片路径和下一页路径就出来了#xff0c;代码如下#xff1a; //
// umei图片批量下载Node.js爬虫1.00
// 2017年11月13日
//// 内置http模块
var httprequire(http);// 内置文件处理模块#xff0c;用于创建目录和图片文件
v…这个爬虫在abaike爬虫的基础上改改图片路径和下一页路径就出来了代码如下 //
// umei图片批量下载Node.js爬虫1.00
// 2017年11月13日
//// 内置http模块
var httprequire(http);// 内置文件处理模块用于创建目录和图片文件
var fsrequire(fs);// cheerio模块提供了类似jQuery的功能用于从HTML code中查找图片地址和下一页
var cheerio require(cheerio);// 请求参数JSON。http和https都有使用
var options;// request请求
var req;// 图片数组找到的图片地址会放到这里
var pictures[];//--------------------------------------
// 爬取网页找图片地址再爬
// pageUrl sample:http://www.umei.cc/meinvtupian/waiguomeinv/12667.htm
// pageUrl sample:http://www.umei.cc/meinvtupian/waiguomeinv/12667_3.htm
//--------------------------------------
function crawl(pageUrl){console.log(Current pagepageUrl);// 得到hostname和pathvar currUrlpageUrl.replace(http://,);var poscurrUrl.indexOf(/);var hostnamecurrUrl.slice(0,pos); var pathcurrUrl.slice(pos); //console.log(hostnamehostname);//console.log(pathpath);// 初始化options options{hostname:hostname,port:80,path:path,// 子路径method:GET,};reqhttp.request(options,function(resp){resp.setEncoding(utf8);var body;resp.on(data,function(chunk){bodychunk; });resp.on(end,function(){//console.log(bodybody);var $ cheerio.load(body); var picCount0;// 找图片放入数组$(.ImageBody p img).each(function(index,element){var picUrl$(element).attr(src);//console.log(picUrl);if(picUrl.indexOf(.jpg)!-1){pictures.push(picUrl); picCount;} }) console.log(找到图片picCount张.);var nextPageUrlnull;// 找下一页$(.NewPages ul li a).each(function(index,element){var text$(element).text();if(text.indexOf(下一页)!-1){nextPageUrl$(element).attr(href);nextPageUrlhttp://www.umei.cc/nextPageUrl;// 把省略部分加上console.log(找到下一页.);} })if(nextPageUrlnull){console.log(pageUrl已经是最后一页了.);download(pictures);}else{//console.log(下一页是nextPageUrl);crawl(nextPageUrl);}});});// 超时处理req.setTimeout(10000,function(){req.abort();});// 出错处理req.on(error,function(err){if(err.codeECONNRESET){console.log([crawl]socket端口连接超时。);console.log(err);}else{console.log(请求发生错误err.code:err.code);console.log(err);}});// 请求结束req.end();
}var total0;
var succeed0;
var failed0;//--------------------------------------
// 下载图片
//--------------------------------------
function download(pictures){var folderpictures(getNowFormatDate());// 创建目录fs.mkdir(./folder,function(err){if(err){console.log(目录folder已经存在);}});totalpictures.length;console.log(总计有total张图片将被下载.);appendToLogfile(folder,总计有total张图片将被下载.\n);for(var i0;ipictures.length;i){var picUrlpictures[i];downloadPic(picUrl,folder);}
}//--------------------------------------
// 写log文件
//--------------------------------------
function appendToLogfile(folder,text){fs.appendFile(./folder/log.txt, text, function (err) {if(err){console.log(不能书写log文件);console.log(err);}});
}//--------------------------------------
// 取得当前时间
//--------------------------------------
function getNowFormatDate() {var date new Date();var seperator1 -;var seperator2 _;var month date.getMonth() 1;var strDate date.getDate();if (month 1 month 9) {month 0 month;}if (strDate 0 strDate 9) {strDate 0 strDate;}var currentdate date.getFullYear() seperator1 month seperator1 strDate date.getHours() seperator2 date.getMinutes() seperator2 date.getSeconds();return currentdate;
}//--------------------------------------
// 下载单张图片
// picUrl sample:http://www.avbaike.net/wp-content/uploads/2016/08/108.jpg
//--------------------------------------
function downloadPic(picUrl,folder){console.log(图片:picUrl下载开始);// 得到hostname和pathvar currUrlpicUrl.replace(http://,);var poscurrUrl.indexOf(/);var hostnamecurrUrl.slice(0,pos); var pathcurrUrl.slice(pos); //console.log(hostnamehostname);//console.log(pathpath);var picNamecurrUrl.slice(currUrl.lastIndexOf(/));// 初始化options options{hostname:hostname,port:80,path:path,// 子路径method:GET,};reqhttp.request(options,function(resp){var imgData ;resp.setEncoding(binary); resp.on(data,function(chunk){imgDatachunk; });resp.on(end,function(){ // 创建文件var fileName./folderpicName;fs.writeFile(fileName, imgData, binary, function(err){if(err){console.log([downloadPic]文件fileName下载失败.);console.log(err);appendToLogfile(folder,文件fileName下载失败.\n);failed;}else{console.log(文件fileName下载成功);succeed;}}); });});// 超时处理req.setTimeout(7500,function(){req.abort();});// 出错处理req.on(error,function(err){if(err){console.log([downloadPic]文件picUrl下载失败,因为err);appendToLogfile(folder,文件picUrl下载失败.\n);}failed;});// 请求结束req.end();
}//--------------------------------------
// 程序入口
//--------------------------------------
function getInput(){process.stdout.write(\033[35m 请输入第一页URL:\033[039m); //紫色process.stdin.resume();process.stdin.setEncoding(utf8); process.stdin.on(data,function(text){process.stdin.end();// 退出输入状态 crawl(text.trim());// trim()是必须的 });
}// 调用getInput函数程序开始
getInput(); 2017年11月13日20:05:44转载于:https://www.cnblogs.com/xiandedanteng/p/7827890.html