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 相关文章推荐
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
nodejs中实现阻塞实例
Mar 24 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
nodejs中使用HTTP分块响应和定时器示例代码
Mar 19 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
nodejs高大上的部署方式(PM2)
Sep 11 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 NodeJs
在nodejs中创建child process的方法
Jan 26 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 GD绘制24小时柱状图
2008/06/28 PHP
PHP教程 基本语法
2009/10/23 PHP
深入理解PHP原理之异常机制
2010/08/21 PHP
PHP防盗链代码实例
2014/08/27 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
学习python 之编写简单乘法运算题
2016/02/27 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
波兰在线香水店:Perfumy.pl
2019/08/12 全球购物
介绍一下游标
2012/01/10 面试题
师德师风建设方案
2014/05/08 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android