• 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

  • 相关阅读:
    linux安装kafka教程
    linux 系统java相关部署
    redies学习总结
    Sentinel自定义异常降级-新旧版本差异
    Android Bitmap压缩详解
    Head First之策略模式
    go测试
    go获取命令行参数
    JVM-垃圾收集算法基础
    Java代理模式
  • 原文地址:https://www.cnblogs.com/heyang78/p/7613955.html
Copyright © 2020-2023  润新知