Node.js meitulu图片批量下载爬虫1.01版

简介:

在 http://www.cnblogs.com/xiandedanteng/p/7614051.html 一文我曾经书写过一个图片下载爬虫,但原有程序不是为下载图片而设计故有些绕,于是稍微改写了一下,可读性应该稍好些。功能上和原程序差不多,只是输出目录不是固定在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');

// 请求参数JSON
var 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,如需转载请自行联系原作者

相关文章
|
1月前
|
存储 开发框架 JavaScript
uniapp、vue、小程序、js图片转base64 示例代码
uniapp、vue、小程序、js图片转base64 示例代码
45 0
|
2月前
|
数据采集 Web App开发 JavaScript
JavaScript爬虫进阶攻略:从网页采集到数据可视化
JavaScript爬虫进阶攻略:从网页采集到数据可视化
|
3月前
|
JavaScript 前端开发 安全
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
66 0
|
4月前
|
移动开发 JavaScript 定位技术
分享118个JS图片代码,总有一款适合您
分享118个JS图片代码,总有一款适合您
23 0
|
2月前
|
JavaScript 前端开发 API
js截取图片地址后面的参数和在路径中截取文件名或后缀名
在处理网页上的图片资源或者其他类型的文件资源时,你可能会遇到需要使用这些技巧的情况。以下是一些具体的使用场景:
22 0
|
8天前
|
数据采集 JavaScript 数据可视化
Node.js爬虫在租房信息监测与分析中的应用
Node.js爬虫在租房信息监测与分析中的应用
|
18天前
|
编解码 前端开发 JavaScript
node实战——koa实现文件下载和图片/pdf/视频预览(node后端储备知识)
node实战——koa实现文件下载和图片/pdf/视频预览(node后端储备知识)
25 1
|
2月前
|
数据采集 存储 Rust
Rust高级爬虫:如何利用Rust抓取精美图片
Rust高级爬虫:如何利用Rust抓取精美图片
|
2月前
|
JavaScript
js判断图片是否加载完成
js判断图片是否加载完成
28 0
|
2月前
|
Web App开发 前端开发 iOS开发
编程笔记 html5&css&js 008 HTML图片
编程笔记 html5&css&js 008 HTML图片