您的位置:首页 > Web前端 > Node.js

nodejs爬虫----爬取煎蛋网美女图片

2017-01-09 15:44 507 查看
这是一个很简单的爬虫,主要是爬取简单妹子图



不跟你多BB,马上上车…,

你需要先安装好nodejs,npm,最好能有淘宝镜像cnpm

负责响应网络请求的request模块

npm install request


负责对抓取的数据进行处理的cheerio

npm install cheerio


负责下载图片的fs模块

npm install fs


负责格式化图片名称的模块path

npm install path


负责处理异步并发的模块async

npm install  async


先看总体效果





var request = require('request');
var cheerio = require('cheerio');
var path = require('path');
var fs = require('fs');
var async = require('async');

var options = [];  //用于存储网址链接的数组
var n=0;

//先生称图片地址链接的数组
for (var i = 1319; i <1329; i++) {
var obj = {
url: 'http://jandan.net/ooxx/page-' + i,
headers:{
'User-Agent': 'request'
}
}
options.push(obj);
}

//用来处理这个调用逻辑的总函数
function all(err, res, body) {
var $ = cheerio.load(body);
n=n+$(".commentlist img").length;
console.log(n);
$(".commentlist img").each(function (i, ele) {
var imgsrc = 'http:' + $(this).attr('src');
var fileName = FileName(imgsrc.toString());
//下载文件操作
downloadImg(imgsrc, fileName, function () {
console.log(fileName + 'upload 完成');
});
})
}
//格式化图片名称
function FileName(url) {
var fileName = path.basename(url);
return fileName;
}
//利用fs模块download图片
function downloadImg(url, filename, callback) {
var stream = fs.createWriteStream('images/' + filename);
request(url).on('error',function(){
console.log('done no');
}).pipe(stream).on('close', callback);
}

//利用async的mapLimit方法实现限定并发数为3的调用
async.mapLimit(options,3, function (option, callback) {
request(option, all);
callback(null);
}, function (err, result) {
if (err) {
console.log(err);
} else {
// console.log(result);
console.log('全部检索完毕');
}
})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: