nodejs爬蟲----爬取煎蛋網美女圖片

這是一個很簡單的爬蟲,主要是爬取簡單妹子圖
這裏寫圖片描述

不跟你多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('全部檢索完畢');
    }
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章