Nodejs实现批量下载妹纸图


Posted in NodeJs onMay 28, 2015

听说最近下载妹子图很火?

Nodejs (javascrpt)自然不能落后~

虽然从没写过像样的Nodejs程序,但作为至少翻过书的前端同学来说,Nodejs用得还蛮顺手的哈~
花了一点事件学习了下Nodejs的网页获取和文件下载方法,没事乱捣腾就写了这个半成品的下载器

使用方法:

1)新建一个download目录
2)新建download.js(其实名字随便取),并复制到download目录下
3)复制两段代码到download.js中
4)打开命令行工具,并将当前目录转到与download目录下
5)在命令行中输入:node download.js
6)等着收妹子图吧~

简单的妹子图对象(新增断定下载支持)

var http = require('http');
var fs = require('fs');
 
function Mzitu(options) {
  this.id = 1;
   
  this.initialize.call(this, options);
  return this;
}
 
Mzitu.prototype = {
  constructor: Mzitu,
  initialize: function _initialize(options) {
    this.baseUrl = options.baseUrl;
    this.dir = options.dir || '';
    this.reg = options.reg;
    this.total = options.total;
    this.page = options.from || 1;
  },
  start: function _start() {
    this.getPage();
  },
  getPage: function _getPage() {
    var self = this,
      data = null;
 
    if (this.page <= this.total) {
      http.get(this.baseUrl + this.page, function (res) {
        res.setEncoding("utf8");
 
        res.on('data', function (chunk) {
          data += chunk;
        }).on('end', function () {
          self.parseData(data);
        });
      });
    }
  },
  parseData: function _parseData(data) {
    var res = [],
      match;
 
    while ((match = this.reg.exec(data)) != null) {
      res.push(match[1]);
    }
 
    this.download(res);
  },
  download: function _download(resource) {
    var self = this,
      currentPage = self.page;
 
    resource.forEach(function (src, idx) {
      var filename = src.substring(src.lastIndexOf('/') + 1),
        writestream = fs.createWriteStream(self.dir + filename);
       
      http.get(src, function (res) {
        res.pipe(writestream);
      });
 
      writestream.on('finish', function () {
        console.log('page: ' + currentPage + ' id: ' + self.id++ + ' download: ' + filename);
      });
    });
     
    self.page++;
    self.getPage();
  }
};

妹子图下载启动方式

var mzitu = new Mzitu({
  baseUrl: 'http://www.mzitu.com/share/comment-page-',
  dir: '',
  reg: /<img\s*src="(.*?)"\s*alt=".*"\s*\/>/g,
  total: 141,
  from: 1
});
 
mzitu.start();

以上所述就是本文的全部内容了,希望大家能够喜欢。

NodeJs 相关文章推荐
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
ubuntu下安装nodejs以及升级的办法
May 08 #NodeJs
浅谈NodeJS中require路径问题
May 07 #NodeJs
NodeJs中的VM模块详解
May 06 #NodeJs
nodejs简单实现中英文翻译
May 04 #NodeJs
nodejs调用cmd命令实现复制目录
May 04 #NodeJs
nodejs通过phantomjs实现下载网页
May 04 #NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 #NodeJs
You might like
php学习笔记之面向对象编程
2012/12/29 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
PHP微信分享开发详解
2017/01/14 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
详解python和matlab的优势与区别
2019/06/28 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
详解Django配置优化方法
2019/11/18 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
某个公司的Java笔面试题
2016/03/11 面试题
大学生毕业自我评价范文分享
2013/11/11 职场文书
优秀高中生事迹材料
2014/02/11 职场文书
导师工作推荐信范文
2014/05/17 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
党员创先争优心得体会
2014/09/11 职场文书
一份文言文检讨书
2014/09/13 职场文书
报效祖国演讲稿
2014/09/15 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
小学一年级数学教学反思
2016/02/16 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript