Node.js 使用爬虫批量下载网络图片到本地
2024-10-19 13:31:13
图片网站往往广告众多,用Node.js写个爬虫下载图片,代码不长,省事不少,比手动一张张保存简直是天与地的区别。以前用Java也做过远程图片下载,但Node.js的下载速度更让人咂舌,这也是非阻塞式变成的好处。
下面代码是一个从mtl.ttsqgs.com下载图片的程序,图片地址是看网站源码看出来的,总共有多少张也可以在网页或源码里找到,然后就是顺藤摸瓜。爬虫无外乎找规律再写代码实现的套路。
// 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // cheerio模块,提供了类似jQuery的功能 var cheerio = require("cheerio"); // 内置文件处理模块 var fs=require('fs'); // 请求参数JSON var options; // 请求并获得数据 var req; var index=1; // 起始页码 var endIndex=43; // 终止页码 function downloadImg(pageNumber){ console.log("开始读取第"+pageNumber+"页"); // eg:http://mtl.ttsqgs.com/images/img/4527/3.jpg options={ hostname:'mtl.ttsqgs.com',// 这里别加http://,否则会出现ENOTFOUND错误 port:80, path:'/images/img/798/'+pageNumber+'.jpg',// 子路径 method:'GET', }; req=http.request(options,function(resp){ var imgData = ""; resp.setEncoding("binary"); resp.on('data',function(chunk){ imgData+=chunk; }); resp.on('end',function(){ var fileName="./xyyx/"+pageNumber+".jpg"; fs.writeFile(fileName, imgData, "binary", function(err){ if(err){ console.log("文件"+fileName+"下载失败."); } console.log(fileName+"下载成功"); }); }); }); // 超时处理 req.setTimeout(5000,function(){ req.abort(); }); // 出错处理 req.on('error',function(err){ if(err.code=="ECONNRESET"){ console.log('socket端口连接超时。'); }else{ console.log('请求发生错误,err.code:'+err.code); } }); // 请求结束 req.end(); // 43页调完 if(index<endIndex){ index++; console.log('继续第'+index+'页'); start(index); } } // 包一层函数 function start(i){ downloadImg(i); } // 开始 start(index);
2017年9月30日10:43:27
最新文章
- SQL 归来
- Bash漏洞批量检测工具与修复方案
- Symmetric Difference
- win10 进入安全模式的方法
- awk语法
- 不变性、协变性和逆变性(Invariance, Covariance &; Contravariance)
- Hadoop化繁为简(二)—层层递进轻松入门hdfs
- 解决ionic2各种坑文章收集
- Hadoop通过HCatalog编写Mapreduce任务访问hive库中schema数据
- Linux基础命令讲解(二)
- WebGL学习(3) - 3D模型
- Java Web前端到后台常用框架介绍
- Shell学习心得(一):变量
- 【ARC072E】Alice in linear land DP
- 精选20道Java代码笔试题
- 使用CSS渐变
- telegraph.conf配置
- 一组数字,从1到n,从中减少了3个数,顺序打乱,放在n-3的数组里,找出丢失数字
- Android 桌面部件
- Spark2 DataSet 创建新行之flatMap
热门文章
- CSS3颜色渐变模式总结
- 【SQL】宿主语言接口
- linux awk学习笔记
- 《锋利的JQuery》读书要点笔记4——表格表单的操作
- scrapy xpath 从response中获取li,然后再获取li中img的src
- hadoop学习一:hadoop安装(hadoop2.4.1,ubuntu14.04)
- 1、Flask实战第1天:第一个Flask程序
- 24、Django实战第24天:讲师列表页
- centos7下mail邮件的查看删除、禁止部分应用发邮件
- [BZOJ2823][BZOJ1336][BZOJ1337]最小圆覆盖(随机增量法)