首页 > web前端 > js教程 > Nodejs实现批量下载妹纸图_node.js

Nodejs实现批量下载妹纸图_node.js

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-05-16 15:57:36
原创
1637 人浏览过

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

Nodejs (javascrpt)自然不能落后~

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

使用方法:

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

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

  }

};

登录后复制

妹子图下载启动方式

1

2

3

4

5

6

7

8

9

var mzitu = new Mzitu({

  baseUrl: 'http://www.mzitu.com/share/comment-page-',

  dir: '',

  reg: /<img src="/static/imghw/default1.png"  data-src="(.*&#63;)"  class="lazy" \s*\s*alt=".*"\s*\/>/g,

  total: 141,

  from: 1

});

  

mzitu.start();

登录后复制

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

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
node.js - nodejs性能好差
来自于 1970-01-01 08:00:00
0
0
0
NodeJS 用 ejs 发送数据到 <script>
来自于 1970-01-01 08:00:00
0
0
0
javascript - NodeJS connect模块use的问题
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板