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开发环境配置与使用
Nov 17 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
nodejs简单抓包工具使用详解
Aug 23 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中spl_autoload详解
2014/10/17 PHP
php自动获取关键字的方法
2015/01/06 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
php压缩文件夹最新版
2018/07/18 PHP
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
详解python字节码
2018/02/07 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
Python对象属性自动更新操作示例
2018/06/15 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
美国社交购物市场:MassGenie
2019/02/18 全球购物
小学校园活动策划
2014/01/30 职场文书
上课玩手机检讨书
2014/02/08 职场文书
新春文艺演出主持词
2014/03/27 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
python四种出行路线规划的实现
2021/06/23 Python
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang