Node.js 使用http客户端得到网站的图片下载到本地

以下代码有些冗余,大家捡核心看就好。

// 内置http模块,提供了http服务器和客户端功能
var http=require("http");

// cheerio模块,提供了类似jQuery的功能
var cheerio = require("cheerio");

// 内置文件处理模块
var fs=require('fs');

// 请求参数JSON
var options;

// 请求并获得数据
var req;

// 存储页码
var index=4;

function downloadImg(pageNumber){
    console.log("开始读取第"+pageNumber+"页");

    // http://images2017.cnblogs.com/blog/162475/201709/162475-20170929115047356-360094413.png // 实际图片地址
    options={
        hostname:'images2017.cnblogs.com',// 这里别加http://,否则会出现ENOTFOUND错误
            port:80,
            path:'/blog/162475/201709/162475-20170929115047356-360094413.png',// 子路径
          method:'GET',
    };
    
    req=http.request(options,function(resp){
        var imgData = "";
        resp.setEncoding("binary"); 

        resp.on('data',function(chunk){
            imgData+=chunk;            
        });

        resp.on('end',function(){
            fs.writeFile("162475-20170929115047356-360094413.png", imgData, "binary", function(err){
                if(err){
                    console.log("文件下载失败.");
                }
                console.log("下载成功");
            });    
        });
    });

    // 超时处理
    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();
}

// 包一层函数
function start(i){
    downloadImg(i);
}

// 开始遍历
start(index);

2017年9月30日10:31:31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值