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 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
nodejs实现聊天机器人功能
Sep 19 NodeJs
nodejs+express最简易的连接数据库的方法
Dec 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
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
2008/03/22 Javascript
JQuery 常用方法基础教程
2009/02/06 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
Python解决鸡兔同笼问题的方法
2014/12/20 Python
python读写ini配置文件方法实例分析
2015/06/30 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Python多线程thread及模块使用实例
2020/04/28 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
物业管理计划书
2014/01/10 职场文书
英语教育专业自荐信
2014/05/29 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书