美女圖片小爬蟲,嘿嘿

/**
 * Created by Administrator on 2016/9/22 0022.
 */
    
//依賴的模塊
var http=require('http');
var fs=require('fs');
var cheerio=require('cheerio');
var request=require('request');
var iconv = require('iconv-lite');

//設置參數
new GetSexyPics({
    initUrl: 'http://www.mm131.com/xinggan/2655_20.html',//初始化網頁請求地址
    maxNum: 100,//設置最大爬取數量(maxNum-index的值即爬取圖片的數量)
    intervalTime: 800,//設置間隔時間
    index: 0//從0開始標記爬取的數量
});

function GetSexyPics(params) {
    _this=this;
    _this.setParams=params;
    this.createFolder = function (name) {
        fs.exists('./' + name, function (exists) {
            if (!exists) {
                fs.mkdir('./' + name);
            }
        });
    };
    this.getSexyPics = function (initUrl) {
        var resData = '';
        var req=http.get(initUrl, function (res) {
            res.on('data', function (chunk) {
                //轉換編碼
                resData += iconv.decode(chunk, 'gb2312');
            });
            res.on('end', function () {
                //用cheerio模塊解析請求的數據
                var $ = cheerio.load(resData);
                var images = {
                    //獲取圖片標題
                    title: $('.content h5').text().trim(),
                    //記錄請求頁面數
                    index: _this.setParams.index = _this.setParams.index + 1
                };
                //下載當前頁面的圖片
                downloadImg($, images.title, images.index);
                var nextPage = $('.content-page a.page-ch:last-child').attr('href');
                var newUrl = 'http://www.mm131.com/xinggan/' + nextPage;
                //若是沒有當前組的圖片點完則跳轉到下一組
                newUrl = nextPage ? newUrl : $('.updown .updown_r').attr('href');
                newUrl = encodeURI(newUrl);
                //設置最大爬取數量
                if (_this.setParams.index < _this.setParams.maxNum) {
                    setTimeout(function () {
                        _this.getSexyPics(newUrl);
                    }, _this.setParams.intervalTime);
                }
                //保存下次爬取圖片時須要初始化的網頁地址
                var nextTimeInitUrl = newUrl;
                //把日誌保存起來,下次手動改initUrl爲日誌裏的地址
                var logs = '下次須要執行的初始化地址是\(替換initUrl便可\)---' + nextTimeInitUrl;
                saveLogs(logs);
            });
        }).on('error', function (e) {
            console.log(e);
            console.log("錯誤:" + e.message);
        });
        function saveLogs(logs) {
            fs.writeFile('./logs/' + '日誌' + '.txt', logs, 'utf-8', function (err) {
                if (err)console.log(err);
            })
        }
        function downloadImg($, imgTil, idx) {
            var imgUrl = '';
            $('.content-pic a img').each(function () {
                imgUrl = encodeURI($(this).attr('src'));//獲取圖片的地址
                var suffix = imgUrl.substring(imgUrl.lastIndexOf('.'));//獲取圖片後綴名
                console.log('第' + idx + '張圖片---' + imgTil + '---' + imgUrl);
                request(imgUrl).pipe(fs.createWriteStream('./img/' + imgTil + suffix));
            });
        }
        req.on('error',function(err){
            console.log(err)
        })
    };
    this.init = function () {
        this.createFolder('img');
        this.createFolder('logs');
        this.getSexyPics(_this.setParams.initUrl);
    };
    this.init();
}

  

以爲好用的給個贊,...javascript

相關文章
相關標籤/搜索