Nodejs实现批量下载妹纸图

 更新时间:2015年05月28日 08:56:48   投稿:hebedich  
这篇文章主要介绍了使用Nodejs实现批量下载妹纸图的方法和详细代码,十分的实用,喜欢妹纸的小伙伴们可以参考下。

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

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();

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

相关文章

  • Node.js开源应用框架HapiJS介绍

    Node.js开源应用框架HapiJS介绍

    这篇文章主要介绍了Node.js开源应用框架HapiJS介绍,本文讲解了HapiJS介绍、HapiJS安装和项目配置和开发实例等内容,需要的朋友可以参考下
    2015-01-01
  • node 可读流与可写流的运用详解

    node 可读流与可写流的运用详解

    这篇文章主要为大家介绍了node 可读流与可写流的运用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 用Node.js遍历多级目录处理文件的代码详解

    用Node.js遍历多级目录处理文件的代码详解

    在日常开发中,处理大量的文件操作是一个常见的需求,特别是在图像处理和存档管理领域,本文给大家介绍了如何用Node.js遍历多级目录处理文件,文章给出了主要步骤和完整代码,需要的朋友可以参考下
    2024-06-06
  • Node.js全局可用变量、函数和对象示例详解

    Node.js全局可用变量、函数和对象示例详解

    JavaScript中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量,下面这篇文章主要给大家介绍了关于Node.js全局可用变量、函数和对象的相关资料,需要的朋友可以参考下
    2023-03-03
  • Node.js进行文件操作(读取/写入/修改/删除)详解

    Node.js进行文件操作(读取/写入/修改/删除)详解

    Node.js是一个神奇的东西,它可以让JavaScript在服务器端运行,让我们的很多前端程序员也能在后端大展身手了!本文就来讲讲如何在Node.js中进行文件操作:读取、写入、修改和删除文件吧
    2023-03-03
  • Node.JS利用PhantomJs抓取网页入门教程

    Node.JS利用PhantomJs抓取网页入门教程

    现今,网页抓取已经是一种人所共知的技术了,然而依然存在着诸多复杂性,下面这篇文章主要给大家介绍了Node.JS利用PhantomJs抓取网页的方法教程,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • 使用Nodejs编写一个脚本实现markdown转pdf功能

    使用Nodejs编写一个脚本实现markdown转pdf功能

    Markdown 是一种轻量级的标记语言,非常适合用来写作和记录,将 Markdown 转换为 PDF 可以让文档在格式和样式上更加统一,也方便在不同设备和平台上查看和打印,在接下来的内容中我们将讲解如何使用 NodeJs 编写一个 Markdown 转 PDF 的脚本来实现我们这个想要的功能
    2024-05-05
  • node.js解决全局安装pnpm后无法使用的问题

    node.js解决全局安装pnpm后无法使用的问题

    在全局安装pnpm后,如果出现无法使用的问题,一般是由于没有添加系统变量导致的,本文就来介绍一下node.js解决全局安装pnpm后无法使用的问题,感兴趣的可以了解一下
    2024-10-10
  • node.js+captchapng+jsonwebtoken实现登录验证示例

    node.js+captchapng+jsonwebtoken实现登录验证示例

    本篇文章主要介绍了node.js+captchapng+jsonwebtoken实现登录验证示例,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • 详解如何优雅在webpack项目实现mock服务器

    详解如何优雅在webpack项目实现mock服务器

    这篇文章主要为大家介绍了详解如何优雅在webpack项目实现mock服务器,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论