/** * 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