Node.js 使用爬虫批量下载网络图片到本地
2017-09-30 10:43
465 查看
图片网站往往广告众多,用Node.js写个爬虫下载图片,代码不长,省事不少,比手动一张张保存简直是天与地的区别。以前用Java也做过远程图片下载,但Node.js的下载速度更让人咂舌,这也是非阻塞式变成的好处。
下面代码是一个从mtl.ttsqgs.com下载图片的程序,图片地址是看网站源码看出来的,总共有多少张也可以在网页或源码里找到,然后就是顺藤摸瓜。爬虫无外乎找规律再写代码实现的套路。
2017年9月30日10:43:27
下面代码是一个从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
相关文章推荐
- Node.js 使用http客户端得到网站的图片下载到本地
- Node.js使用fs模块实现对本地图片下载
- 利用Node 搭配uglify-js压缩js文件,批量下载图片到本地
- 网络采集软件核心技术剖析系列(3)---如何使用C#语言下载博文中的全部图片到本地并可以离线浏览
- node.js抓取网络图片保存到本地,node.js抓取防盗链网络图片保存到本地
- 使用java语言爬取网络图片并下载到本地
- python 使用 urllib.urlretrieve()下载网络图片,在本地打开提示文件损坏无法打开
- 使用urlconnection下载文件或图片并保存到本地
- iphone:使用NSURLConnection下载网络图片
- android异步从网络下载图片,并缓存到本地
- jsp、js限制本地上传图片大小、类型(js经过测试,项目中可以使用)
- 使用node.js获取图片的base64编码
- Android异步从网络下载图片并且缓存图片到本地的demo
- 下载图片--网络图片下载。(读取网络文件,填充到本地文件。)
- 通过Java HTTP连接将网络图片下载到本地
- 使用JAVA在线下载图片至本地,并上传至FTP
- Android异步下载网络图片&android解析xml文件的方式&使用Adapter为ListView提供数据
- 终于搞定使用node.js +redis 作为服务端,提供图片上传存储服务
- ConnectStream下载网络图片转成MemorySteam下载到本地
- Android异步下载网络图片&android解析xml文件的方式&使用Adapter为ListView提供数据