博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js meitulu图片批量下载爬虫1.01版
阅读量:5954 次
发布时间:2019-06-19

本文共 2171 字,大约阅读时间需要 7 分钟。

在  一文我曾经书写过一个图片下载爬虫,但原有程序不是为下载图片而设计故有些绕,于是稍微改写了一下,可读性应该稍好些。功能上和原程序差不多,只是输出目录不是固定在test目录了。代码如下:

//================================================// https://www.meitulu.com图片批量下载Node.js爬虫1.01// 2017年11月5日//================================================// 内置http模块,提供了http服务器和客户端功能var http=require("http");// cheerio模块,提供了类似jQuery的功能var cheerio = require("cheerio");// 内置文件处理模块var fs=require('fs');// 请求参数JSONvar options;// request请求var req;//--------------------------------------// 程序入口//--------------------------------------function start(){    var folder="38";    fs.mkdir('./'+folder,function(err){        if(err){            console.log("创建目录"+folder+"失败");        }    });    var startIndex=1;    var endIndex=104;    for(var i=startIndex;i<=endIndex;i++){        downloadPic(folder,i);    }}//--------------------------------------// 下载图片// folder:图片所在url的目录// pinctureIndex:图片序号//--------------------------------------function downloadPic(folder,pinctureIndex){    console.log("开始下载"+pinctureIndex);    // 初始化options    options={        hostname:'mtl.ttsqgs.com',// 这里别加http://,否则会出现ENOTFOUND错误            port:80,            path:'/images/img/'+folder+'/'+pinctureIndex+'.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="./"+folder+"/"+pinctureIndex+".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();}// 调用start函数,程序开始start();

 

本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/xiandedanteng/p/7788877.html,如需转载请自行联系原作者

你可能感兴趣的文章
Ubuntu Sub-process /usr/bin/dpkg
查看>>
详解DNS的常用记录(下):DNS系列之三
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
事情的两面性
查看>>
只要会营销,shi都能卖出去?
查看>>
sed单行处理命令奇偶行输出
查看>>
走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
查看>>
VC++深入详解学习笔记1
查看>>
安装配置discuz
查看>>
CentOS7 64位小型操作系统的安装
查看>>
线程互互斥锁
查看>>
KVM虚拟机&openVSwitch杂记(1)
查看>>
win7下ActiveX注册错误0x80040200解决参考
查看>>
《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1-正确认识软件架构...
查看>>
2013 Linux领域年终盘点
查看>>
linux学习之查看程序端口占用情况
查看>>
相逢在栀枝花开的季节
查看>>
linux下git自动补全命令
查看>>
Ubuntu14.04LTS更新源
查看>>
Linux报“Unknown HZ value! (288) Assume 100”错误
查看>>