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

// 内置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

最新文章

  1. Python 【第十章】 Django路由
  2. c#操作IIS站点
  3. 肯爹的 StringUtils.isNumeric(String str)
  4. [你必须知道的.NET]第三十五回,判断dll是debug还是release,这是个问题
  5. 【BZOJ】1925: [Sdoi2010]地精部落 DP+滚动数组
  6. JavaScript高级程序设计25.pdf
  7. winform批量查询单号剔除重复
  8. LeetCode_Rotate Image
  9. 【示例代码】HTML+JS 画图板源码分享
  10. MyBatis介绍
  11. 安徽省2016“京胜杯”程序设计大赛_E_转啊转
  12. 面试题(php部分)
  13. 3D Slicer中文教程(六)—调用matlab函数(MatlabBridge使用方法)
  14. BUAA-OO-第二单元总结
  15. Linux内存管理 (16)内存规整
  16. jvm 虚拟机内存模型
  17. 论文阅读笔记十:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs (DeepLabv2)(CVPR2016)
  18. [hgoi#2019/2/18]比较水
  19. UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
  20. Android-okhttp

热门文章

  1. PoI导出列表优化
  2. docker从零开始 存储(四)tmpfs挂载
  3. Django基础之模板
  4. yii2.0在model里自定义数据表
  5. WebDriver框架之自动运行失败的case
  6. (十一)数组array
  7. (5)python 字符串和输入输出
  8. Python与数据结构[4] -> 散列表[2] -> 开放定址法与再散列的 Python 实现
  9. [Python Debug]Kernel Crash While Running Neural Network with Keras|Jupyter Notebook运行Keras服务器宕机原因及解决方法
  10. 【转】vector用法