首页 > 语言 > JavaScript > 正文

Nodejs实现批量下载妹纸图

2024-05-06 16:20:57
字体:
来源:转载
供稿:网友

这篇文章主要介绍了使用Nodejs实现批量下载妹纸图的方法和详细代码,十分的实用,喜欢妹纸的小伙伴们可以参考下。

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

Nodejs (javascrpt)自然不能落后~

虽然从没写过像样的Nodejs程序,但作为至少翻过书的前端同学来说,Nodejs用得还蛮顺手的哈~

花了一点事件学习了下Nodejs的网页获取和文件下载方法,没事乱捣腾就写了这个半成品的下载器

使用方法:

1)新建一个download目录

2)新建download.js(其实名字随便取),并复制到download目录下

3)复制两段代码到download.js中

4)打开命令行工具,并将当前目录转到与download目录下

5)在命令行中输入:node download.js

6)等着收妹子图吧~

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

 

 
  1. var http = require('http'); 
  2. var fs = require('fs'); 
  3.  
  4. function Mzitu(options) { 
  5. this.id = 1; 
  6.  
  7. this.initialize.call(this, options); 
  8. return this
  9.  
  10. Mzitu.prototype = { 
  11. constructor: Mzitu, 
  12. initialize: function _initialize(options) { 
  13. this.baseUrl = options.baseUrl; 
  14. this.dir = options.dir || ''
  15. this.reg = options.reg; 
  16. this.total = options.total; 
  17. this.page = options.from || 1; 
  18. }, 
  19. start: function _start() { 
  20. this.getPage(); 
  21. }, 
  22. getPage: function _getPage() { 
  23. var self = this
  24. data = null
  25.  
  26. if (this.page <= this.total) { 
  27. http.get(this.baseUrl + this.page, function (res) { 
  28. res.setEncoding("utf8"); 
  29.  
  30. res.on('data'function (chunk) { 
  31. data += chunk; 
  32. }).on('end'function () { 
  33. self.parseData(data); 
  34. }); 
  35. }); 
  36. }, 
  37. parseData: function _parseData(data) { 
  38. var res = [], 
  39. match; 
  40.  
  41. while ((match = this.reg.exec(data)) != null) { 
  42. res.push(match[1]); 
  43.  
  44. this.download(res); 
  45. }, 
  46. download: function _download(resource) { 
  47. var self = this
  48. currentPage = self.page; 
  49.  
  50. resource.forEach(function (src, idx) { 
  51. var filename = src.substring(src.lastIndexOf('/') + 1), 
  52. writestream = fs.createWriteStream(self.dir + filename); 
  53.  
  54. http.get(src, function (res) { 
  55. res.pipe(writestream); 
  56. }); 
  57.  
  58. writestream.on('finish'function () { 
  59. console.log('page: ' + currentPage + ' id: ' + self.id++ + ' download: ' + filename); 
  60. }); 
  61. }); 
  62.  
  63. self.page++; 
  64. self.getPage(); 
  65. }; 

妹子图下载启动方式

 

 
  1. var mzitu = new Mzitu({ 
  2. baseUrl: 'http://www.mzitu.com/share/comment-page-'
  3. dir: ''
  4. reg: /<img/s*src="(.*?)"/s*alt=".*"/s*//>/g, 
  5. total: 141, 
  6. from: 1 
  7. }); 
  8.  
  9. mzitu.start(); 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选