Node.js mm131图片批量下载爬虫1.01 增加断点续传功能

本文介绍了使用Node.js实现的图片批量下载爬虫,并增加了断点续传功能。该功能允许在爬行过程中遭遇网络问题时,能从上次中断的页面和数据继续爬行。通过存储目录、当前爬行页面和已获取图片的JSON数据,用户可以选择断点续传模式,从上次中断的状态恢复爬行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里的断点续传不是文件下载时的断点续传,而是指在爬行页面时有时会遇到各种网络中断而从中断前的页面及其数据继续爬行的过程,这个过程和断点续传原理上相似故以此命名。我的具体做法是:在下载出现故障或是图片已经全部获得时,将存储目录,当前爬行页面和已经获取的图片地址以json形式存储到数据文件中,而用户选择断点续传模式时提取数据文件中的这三条信息,继而从上次中断之处重新运行。

数据文件示例:

{"url":"http://m.03122.com/gaoqing/9353/27.html","pictures":["http://img.cdjqjy.com/pic/gqimg/94/b36ab1a61b3c19d84386ed69ffcdad16.jpg","http://img.cdjqjy.com/pic/gqimg/94/fd4b2a40df592105725d7374f101d86c.jpg","http://img.cdjqjy.com/pic/gqimg/94/cd742a03afa54603d39b2a0d67190cfb.jpg","http://img.cdjqjy.com/pic/gqimg/94/69493144d80120ce1631d98b77ab667a.jpg"],"folder":"pictures(2017-11-18 15_5_31)"}

 

Node.js 代码如下:

//======================================================
// mm131图片批量下载爬虫1.01
// 1.00 具备功能
// 1.01 增加断点续传
// 2017年11月15日
//======================================================

// 内置http模块
var http=require("http");

// 内置文件处理模块,用于创建目录和图片文件
var fs=require('fs');

// 用于转码。非Utf8的网页如gb2132会有乱码问题,需要iconv将其转码
var iconv = require('iconv-lite');

// cheerio模块,提供了类似jQuery的功能,用于从HTML code中查找图片地址和下一页
var cheerio = require("cheerio");

// 请求参数JSON。http和https都有使用
var options;

// request请求
var req;

// 图片数组,找到的图片地址会放到这里
var pictures=[];

// 存放图片的目录
var folder="";

//--------------------------------------
// 爬取网页,找图片地址,再爬
// pageUrl sample:http://www.mm131.com/xinggan/2852.html
// pageUrl sample:http://www.mm131.com/xinggan/2853.html
// pageUrl sample:http://www.mm131.com/xinggan/2976.html  
//--------------------------------------
function crawl(pageUrl){
    console.log("Current page="+pageUrl);

    // 得到hostname和path
    var currUrl=pageUrl.replace("http://","");
    var pos=currUrl.indexOf("/");
    var hostname=currUrl.slice(0,pos);        
    var path=currUrl.slice(pos);    
    //console.log("hostname="+hostname);
    //console.log("path="+path);
    
    // 初始化options  
    options={
        hostn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值