首页 技术 正文
技术 2022年11月16日
0 收藏 386 点赞 2,338 浏览 51183 个字
//======================================================// 理想论坛帖子下载爬虫1.09// 使用断点续传模式,因为网络传输会因各种原因中断// 2018年5月4日//======================================================var http=require("http");            // http模块var zlib = require('zlib');            // 用于解析gzip网页var fs=require('fs');                // 文件处理模块var iconv = require('iconv-lite');    // 用于转码。var cheerio = require("cheerio");    // 用于从HTML中以类似jquery方式查找目标var async=require('async');            // 用于异步流程控制var EventProxy = require('eventproxy');// 用来控制并发var BufferHelper = require('bufferhelper');// 用于拼接chunk//--- 下面为全局变量 ---var folder;// 存文件的目录var topics=[]; // 帖子数组var finalTopics=[];// 所有帖子加子贴的最终数组var failedTopics=[]; // # 失败的帖子数组//-------------------------------// 用于创建目录//-------------------------------function createFolder(){    console.log('准备创建目录');    folder=currDateTime();    fs.mkdir('./'+folder,function(err){        if(err){            console.log("目录"+folder+"创建失败,因为"+err);        }else{            console.log("目录"+folder+"已创建");        }    });}//-------------------------------// 浏览页面找主贴// start:开始页,end:结束页//-------------------------------function findTopics(start,end){    console.log('准备从以下页面寻找主贴');    for(var i=start;i<=end;i++){        pageUrl='http://www.55188.com/forum-8-'+i+'.html'        findTopicsInPage(pageUrl);    }}//-------------------------------// 找到每个论坛页中的帖子// pageUrl:论坛页的地址//-------------------------------function findTopicsInPage(pageUrl){    console.log("page="+pageUrl);    var currUrl=pageUrl.replace("http://","");    var pos=currUrl.indexOf("/");    var hostname=currUrl.slice(0,pos);    var path=currUrl.slice(pos);    pos=currUrl.lastIndexOf("/");    var dir="http://"+currUrl.slice(0,pos);                var options={        hostname:hostname,            port:80,            path:path,          method:'GET',    };        var req=http.request(options,function(resp){        var html = [];        resp.on("data", function(data) {            html.push(data);        })        resp.on("end", function() {            var buffer = Buffer.concat(html);            var body = iconv.decode(buffer,'gb2312');            var $ = cheerio.load(body);                        $("tbody").each(function(index,element){                var $tbody=cheerio.load($(element).html());                var topic={};                topic.pageCount=1;                topic.url=null;                topic.title=null;                $tbody(".forumdisplay a").each(function(index,element){                    var topicUrl='http://www.55188.com/'+$tbody(element).attr("href");                    var topicTitle=$tbody(element).text();                    topic.url=topicUrl                    topic.title=topicTitle;                })                $tbody(".threadpages").each(function(index,element){                    topic.pageCount=$tbody(element).children().last().text();                })                if(topic.url!=null && topic.title!=null){                    topics.push(topic);                }            })        }).on("error", function(err) {            console.log("findTopicsInPage函数请求后获取响应时出现异常"+err);        })    });    // 超时处理    req.setTimeout(7500,function(){        req.abort();    });    // 出错处理    req.on('error',function(err){        console.log('findTopicsInPage函数请求时发生错误'+err);    });    // 请求结束    req.end();}//-------------------------------// 保存每个帖子到文件,完成一个递归调自己一次// Nodejs特殊的回调处理使循环递归化//-------------------------------function saveTopicDetails(){    if(finalTopics.length>0){        var topic=finalTopics.pop();        var request = require('request');        var req = request(topic.url, {timeout: 10000, pool: false});        req.setMaxListeners(50);        req.setHeader('user-agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36');        req.on('error', function(err) {            var text=nowTime()+"saveTopicDetails函数请求时出现异常"+err+'\n';            text+=nowTime()+" url="+topic.url+'\n';            text+=nowTime()+" title="+topic.title+'\n';            text+=nowTime()+" index="+topic.index+'\n';            console.log(coloredText(text,'red'));            ///            failedTopics.push(topic);            saveTopicDetails();//出错后依旧递归        });        req.on('response', function(res) {            var bufferHelper = new BufferHelper();            res.on('data', function (chunk) {                bufferHelper.concat(chunk);            });            res.on('end',function(){                var body = iconv.decode(bufferHelper.toBuffer(),'GBK');                var infos= getInfosFrom(body,topic);                if(infos.length>0){                    filename='./'+folder+'/'+topic.index+'.json';                    saveInfosTo(filename,infos,topic);                }                if(topic.index % 50==0){                    console.log(coloredText(nowTime()+'处理到第'+topic.index+'个文件','green'));//让控制台出点动静                    var savefilename="./save.dat"                    var saveData={'folder':folder,'finalTopics':finalTopics,'failedTopics':failedTopics}                    fs.writeFile(savefilename,JSON.stringify(saveData),function(err){                        if(err){                            console.log(coloredText(nowTime()+'在函数saveInfosTo中写入文件'+savefilename+'失败,因为'+err,'red'));                        }                    });                }                saveTopicDetails();//一个帖子完成,递归一次            });        })    }}//-------------------------------// 把内容数组保存到文件// filename:文件名,infos:内容数组,topic:帖子//-------------------------------function saveInfosTo(filename,infos,topic){    fs.writeFile(filename,JSON.stringify(infos),function(err){        if(err){            console.log(coloredText(nowTime()+'在函数saveInfosTo中写入文件'+filename+'失败,因为'+err,'red'));        }    });    // 判断文件是否存在    /*fs.exists(filename,function(exists){        if(exists){            console.log(coloredText(nowTime()+"已经存在url="+topic.url+",index="+topic.index+"对应的文件",'yellow'));        }else{            if(infos.length>0){                fs.writeFile(filename,JSON.stringify(infos),function(err){                    if(err){                        console.log(coloredText(nowTime()+'在函数saveInfosTo中写入文件'+filename+'失败,因为'+err,'red'));                    }                });            }        }    });*/}//-------------------------------// 找到帖子内容,返回内容数组// body:网页HTML全文,topic:帖子//-------------------------------function getInfosFrom(body,topic){    var $ = cheerio.load(body);    var infos=[];// 获得的发帖人信息    $(".postcontent").each(function(index,element){        var $td=cheerio.load($(element).html());        var info={    'url':topic.url,                    'title':topic.title,                    '楼层':'none',                    '作者':'none',                    '日期':'none',                    '时间':'none',                    '内容':'none',};        // 得到发帖人信息        $td(".postinfo").each(function(index,element){            var content=$td(element).text();            content=content.replace(/\s+/g,' ');// 空白字符替换为一个空格            var arr=content.split(" ");// 以空格劈分            if(arr.length==7){                info['楼层']=arr[1];                info['作者']=arr[2].replace('只看:','');                info['日期']=arr[4];                info['时间']=arr[5];            }else if(arr.length==8){                info['楼层']=arr[1];                info['作者']=arr[2].replace('只看:','');                info['日期']=arr[5];                info['时间']=arr[6];            }        })        // 得到发帖内容        var isGotContent=false;        $td(".postmessage .t_msgfont .t_msgfont").each(function(index,element){            info['内容']=$td(element).text();            isGotContent=true;        })        // 作者被屏蔽,没取到的情况        if(isGotContent==false){            // 作者被禁止或删除 内容自动屏蔽            $td(".postmessage .notice").each(function(index,element){                info['内容']=$td(element).text();            })        }        // 找齐七颗龙珠才算完成任务,作者,内容作为代表        if(info['作者']!='none' && info['内容']!='none'){            infos.push(info);        }    })    return infos;}//-------------------------------// 【新的开始】函数// start:起始页,从1开始// end:终止页,>start//-------------------------------function newGame(start,end){    var flow=require('nimble');    flow.series([        function(callback){            setTimeout(function(){                createFolder();                callback();            },100);        },        function(callback){            setTimeout(function(){                findTopics(start,end);                callback();            },100);        },        function(callback){            setTimeout(function(){                var n=topics.length;                console.log("共找到"+n+"个帖子");                // 获得每个子贴所在地址,序号和标题                var index=0;                var arr=[];                for(var i=0;i<n;i++){                    var topic=topics[i];                    for(var j=1;j<=topic.pageCount;j++){                        var regexp=new RegExp(/-(\d+)-(\d+)-(\d+)/);                        var topicUrl=topic.url.replace(regexp,"-$1-"+j+"-$3");// 用正则表达式替换第二个数字                        var item={'index':index,'url':topicUrl,'title':topic.title};                        arr.push(item);                        index++;                    }                }                finalTopics=arr;// 所有帖子加子贴的最终数组                finalTopics.reverse();                console.log('拟生成文件'+finalTopics.length+'个');                saveTopicDetails();                callback();            },3000);        },    ]);}//--------------------------------------// 【再续前缘】函数//--------------------------------------function load(){    fs.readFile('./save.dat','utf8',function(err,data){        if(err){            console.log('函数load里读取文件save.dat失败,因为'+err);        }else{            var savedData=JSON.parse(data);            folder=savedData.folder;            fs.exists('./'+folder,function(exists){                if(exists==false){                    // 创建目录                    fs.mkdir('./'+folder,function(err){                        if(err){                            console.log("目录"+folder+"已经存在");                        }                    });                }            });            finalTopics=savedData['finalTopics'];            console.log('上次未完成列表中有'+finalTopics.length+'个文件');            failedTopics=savedData['failedTopics'];            console.log('上次下载失败列表中有'+failedTopics.length+'个文件');            finalTopics=finalTopics.concat(failedTopics);// 曾经下载不了的融合到全部中继续下载            failedTopics=[];                        console.log('拟生成文件'+finalTopics.length+'个');            saveTopicDetails();        }    });}//--------------------------------------// 通用函数,返回当前日期时间 创建目录用//--------------------------------------function currDateTime() {    var date = new Date();    var seperator1 = "-";    var seperator2 = "_";    var month = date.getMonth() + 1;    var strDate = date.getDate();    if (month >= 1 && month <= 9) {        month = "0" + month;    }    if (strDate >= 0 && strDate <= 9) {        strDate = "0" + strDate;    }    var currentdate =date.getFullYear() + seperator1 + month + seperator1 + strDate            + " " + date.getHours() + seperator2 + date.getMinutes()            + seperator2 + date.getSeconds();    return currentdate;}//--------------------------------------// 通用函数,返回当前日期时间 控制台输出时间用//--------------------------------------function nowTime() {    var date = new Date();    var seperator1 = "-";    var seperator2 = ":";    var month = date.getMonth() + 1;    var strDate = date.getDate();    if (month >= 1 && month <= 9) {        month = "0" + month;    }    if (strDate >= 0 && strDate <= 9) {        strDate = "0" + strDate;    }    var currentdate =date.getFullYear() + seperator1 + month + seperator1 + strDate            + " " + date.getHours() + seperator2 + date.getMinutes()            + seperator2 + date.getSeconds()+ " ";    return currentdate;}//-------------------------------// 得到带颜色(前景色)的文字,用于在控制台输出// text:文字,color:前景色//-------------------------------function coloredText(text,color){    var dic = new Array();    dic["white"] = ['\x1B[37m', '\x1B[39m'];    dic["grey"] = ['\x1B[90m', '\x1B[39m'];    dic["black"] = ['\x1B[30m', '\x1B[39m'];    dic["blue"] = ['\x1B[34m', '\x1B[39m'];    dic["cyan"] = ['\x1B[36m', '\x1B[39m'];    dic["green"] = ['\x1B[32m', '\x1B[39m'];    dic["magenta"] = ['\x1B[35m', '\x1B[39m'];    dic["red"] = ['\x1B[31m', '\x1B[39m'];    dic["yellow"] = ['\x1B[33m', '\x1B[39m'];    return dic[color][0]+text+dic[color][1];}//-------------------------------// 入口函数//-------------------------------function main(){    process.stdin.resume();    process.stdout.write("\033[33m 选择【再续前缘】输入0,选择【新的开始】输入页码,以逗号分隔: \033[39m");// 草黄色    process.stdin.setEncoding('utf8');    process.stdin.on('data',function(text){        var input=text.trim();        process.stdin.end();// 退出输入状态            if(text.trim()=='0'){            console.log(coloredText('【再续前缘】','cyan'));            load();        }else{            console.log(coloredText('【新的开始】','magenta'));            var arr=input.split(",");            newGame(arr[0],arr[1]);        }    });}// 开始main();

2018年5月4日21点15分

控制台输出:

C:\Users\horn1\Desktop\node.js\66-理想论坛爬虫1.09 - insertdb.js>node lixiang.js 选择【再续前缘】输入0,选择【新的开始】输入页码,以逗号分隔: 1,3【新的开始】准备创建目录目录2018-05-06 21_36_5已创建准备从以下页面寻找主贴page=http://www.55188.com/forum-8-1.htmlpage=http://www.55188.com/forum-8-2.htmlpage=http://www.55188.com/forum-8-3.html共找到210个帖子拟生成文件9788个2018-05-06 21:36:10 处理到第0个文件2018-05-06 21:37:1 处理到第50个文件2018-05-06 21:37:48 处理到第100个文件2018-05-06 21:38:38 处理到第150个文件2018-05-06 21:39:33 处理到第200个文件2018-05-06 21:40:35 处理到第250个文件2018-05-06 21:42:3 处理到第300个文件2018-05-06 21:43:27 处理到第350个文件2018-05-06 21:44:48 处理到第400个文件2018-05-06 21:46:5 处理到第450个文件2018-05-06 21:47:4 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 21:47:4  url=http://www.55188.com/thread-7233771-343-3.html2018-05-06 21:47:4  title= 一点心语——炒股,戒急用忍!2018-05-06 21:47:4  index=4652018-05-06 21:47:25 处理到第500个文件2018-05-06 21:47:58 处理到第550个文件2018-05-06 21:48:28 处理到第600个文件2018-05-06 21:48:55 处理到第650个文件2018-05-06 21:49:25 处理到第700个文件2018-05-06 21:49:56 处理到第750个文件2018-05-06 21:50:39 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 21:50:39  url=http://www.55188.com/thread-7233771-644-3.html2018-05-06 21:50:39  title= 一点心语——炒股,戒急用忍!2018-05-06 21:50:39  index=7662018-05-06 21:50:42 处理到第800个文件2018-05-06 21:51:2 处理到第850个文件2018-05-06 21:51:18 处理到第900个文件2018-05-06 21:51:40 处理到第950个文件2018-05-06 21:51:57 处理到第1000个文件2018-05-06 21:52:15 处理到第1050个文件2018-05-06 21:52:35 处理到第1100个文件2018-05-06 21:53:22 处理到第1150个文件2018-05-06 21:53:26 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 21:53:26  url=http://www.55188.com/thread-3980834-142-3.html2018-05-06 21:53:26  title= 晓哥的投资生涯:超长线实盘贴2018-05-06 21:53:26  index=11432018-05-06 21:53:46 处理到第1200个文件2018-05-06 21:54:9 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 21:54:9  url=http://www.55188.com/thread-3980834-213-3.html2018-05-06 21:54:9  title= 晓哥的投资生涯:超长线实盘贴2018-05-06 21:54:9  index=12142018-05-06 21:54:19 saveTopicDetails函数请求时出现异常Error: ETIMEDOUT2018-05-06 21:54:19  url=http://www.55188.com/thread-3980834-240-3.html2018-05-06 21:54:19  title= 晓哥的投资生涯:超长线实盘贴2018-05-06 21:54:19  index=12412018-05-06 21:54:19 saveTopicDetails函数请求时出现异常Error: ETIMEDOUT2018-05-06 21:54:19  url=http://www.55188.com/thread-3980834-241-3.html2018-05-06 21:54:19  title= 晓哥的投资生涯:超长线实盘贴2018-05-06 21:54:19  index=12422018-05-06 21:54:19 saveTopicDetails函数请求时出现异常Error: ETIMEDOUT2018-05-06 21:54:19  url=http://www.55188.com/thread-3980834-242-3.html2018-05-06 21:54:19  title= 晓哥的投资生涯:超长线实盘贴2018-05-06 21:54:19  index=12432018-05-06 21:54:19 saveTopicDetails函数请求时出现异常Error: ETIMEDOUT2018-05-06 21:54:19  url=http://www.55188.com/thread-3980834-243-3.html2018-05-06 21:54:19  title= 晓哥的投资生涯:超长线实盘贴2018-05-06 21:54:19  index=12442018-05-06 21:54:22 处理到第1250个文件2018-05-06 21:54:46 处理到第1300个文件2018-05-06 21:55:6 处理到第1350个文件2018-05-06 21:55:32 处理到第1400个文件2018-05-06 21:55:54 处理到第1450个文件2018-05-06 21:56:19 处理到第1500个文件2018-05-06 21:56:56 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 21:56:56  url=http://www.55188.com/thread-3980834-515-3.html2018-05-06 21:56:56  title= 晓哥的投资生涯:超长线实盘贴2018-05-06 21:56:56  index=15162018-05-06 21:56:58 处理到第1550个文件2018-05-06 21:57:11 处理到第1600个文件2018-05-06 21:57:31 处理到第1650个文件2018-05-06 21:57:44 处理到第1700个文件2018-05-06 21:58:0 处理到第1750个文件2018-05-06 21:58:18 处理到第1800个文件2018-05-06 21:58:29 处理到第1850个文件2018-05-06 21:58:51 处理到第1900个文件2018-05-06 21:59:3 处理到第1950个文件2018-05-06 21:59:16 处理到第2000个文件2018-05-06 21:59:27 处理到第2050个文件2018-05-06 21:59:48 处理到第2100个文件2018-05-06 22:0:2 处理到第2150个文件2018-05-06 22:0:39 处理到第2200个文件2018-05-06 22:0:59 处理到第2250个文件2018-05-06 22:1:14 处理到第2300个文件2018-05-06 22:1:25 处理到第2350个文件2018-05-06 22:1:39 处理到第2400个文件2018-05-06 22:1:52 处理到第2450个文件2018-05-06 22:2:12 处理到第2500个文件2018-05-06 22:2:32 处理到第2550个文件2018-05-06 22:2:44 处理到第2600个文件2018-05-06 22:2:56 处理到第2650个文件2018-05-06 22:3:4 处理到第2700个文件2018-05-06 22:3:6 处理到第2750个文件2018-05-06 22:3:8 处理到第2800个文件2018-05-06 22:3:19 处理到第2850个文件2018-05-06 22:3:31 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 22:3:31  url=http://www.55188.com/thread-7647942-78-3.html2018-05-06 22:3:31  title= 鲁L蒲公英◆股票期货实战操盘日志 ~【荣誉不代表未来,实战在每天打响!】2018-05-06 22:3:31  index=28592018-05-06 22:3:49 处理到第2900个文件2018-05-06 22:4:9 处理到第2950个文件2018-05-06 22:4:21 处理到第3000个文件2018-05-06 22:4:39 处理到第3050个文件2018-05-06 22:4:54 处理到第3100个文件2018-05-06 22:5:11 处理到第3150个文件2018-05-06 22:5:32 处理到第3200个文件2018-05-06 22:5:46 处理到第3250个文件2018-05-06 22:6:7 处理到第3300个文件2018-05-06 22:6:26 处理到第3350个文件2018-05-06 22:6:42 处理到第3400个文件2018-05-06 22:6:57 处理到第3450个文件2018-05-06 22:7:11 处理到第3500个文件2018-05-06 22:7:30 处理到第3550个文件2018-05-06 22:7:52 处理到第3600个文件2018-05-06 22:8:9 处理到第3650个文件2018-05-06 22:8:24 处理到第3700个文件2018-05-06 22:8:36 处理到第3750个文件2018-05-06 22:8:49 处理到第3800个文件2018-05-06 22:9:0 处理到第3850个文件2018-05-06 22:9:12 处理到第3900个文件2018-05-06 22:9:27 处理到第3950个文件2018-05-06 22:9:47 处理到第4000个文件2018-05-06 22:10:7 处理到第4050个文件2018-05-06 22:10:27 处理到第4100个文件2018-05-06 22:10:40 处理到第4150个文件2018-05-06 22:10:50 处理到第4200个文件2018-05-06 22:11:0 处理到第4250个文件2018-05-06 22:11:11 处理到第4300个文件2018-05-06 22:11:24 处理到第4350个文件2018-05-06 22:11:35 处理到第4400个文件2018-05-06 22:11:48 处理到第4450个文件2018-05-06 22:12:2 处理到第4500个文件2018-05-06 22:12:16 处理到第4550个文件2018-05-06 22:12:32 处理到第4600个文件2018-05-06 22:12:35 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 22:12:35  url=http://www.55188.com/thread-7565734-179-2.html2018-05-06 22:12:35  title= 新实盘开七年(12年盈利8倍,13年盈利6倍,14年盈利11倍,15年盈利10倍,计划16年10倍)2018-05-06 22:12:35  index=45772018-05-06 22:12:44 处理到第4650个文件2018-05-06 22:12:58 处理到第4700个文件2018-05-06 22:13:1 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 22:13:1  url=http://www.55188.com/thread-7565734-273-2.html2018-05-06 22:13:1  title= 新实盘开七年(12年盈利8倍,13年盈利6倍,14年盈利11倍,15年盈利10倍,计划16年10倍)2018-05-06 22:13:1  index=46712018-05-06 22:13:1 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 22:13:1  url=http://www.55188.com/thread-7565734-272-2.html2018-05-06 22:13:1  title= 新实盘开七年(12年盈利8倍,13年盈利6倍,14年盈利11倍,15年盈利10倍,计划16年10倍)2018-05-06 22:13:1  index=46702018-05-06 22:13:10 处理到第4750个文件2018-05-06 22:13:20 处理到第4800个文件2018-05-06 22:13:29 处理到第4850个文件2018-05-06 22:13:40 处理到第4900个文件2018-05-06 22:13:49 处理到第4950个文件2018-05-06 22:14:0 处理到第5000个文件2018-05-06 22:14:17 处理到第5050个文件2018-05-06 22:14:29 处理到第5100个文件2018-05-06 22:14:43 处理到第5150个文件2018-05-06 22:14:48 处理到第5200个文件2018-05-06 22:14:49 处理到第5250个文件2018-05-06 22:14:50 处理到第5300个文件2018-05-06 22:14:51 处理到第5350个文件2018-05-06 22:14:53 处理到第5400个文件2018-05-06 22:14:54 处理到第5450个文件2018-05-06 22:14:54 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 22:14:54  url=http://www.55188.com/thread-8158615-167-2.html2018-05-06 22:14:54  title= 未来牛市会以什么方式运行?2018-05-06 22:14:54  index=50202018-05-06 22:14:55 处理到第5500个文件2018-05-06 22:14:58 处理到第5550个文件2018-05-06 22:15:9 处理到第5600个文件2018-05-06 22:15:19 处理到第5650个文件2018-05-06 22:15:27 处理到第5700个文件2018-05-06 22:15:34 处理到第5750个文件2018-05-06 22:15:41 处理到第5800个文件2018-05-06 22:15:51 处理到第5850个文件2018-05-06 22:16:2 处理到第5900个文件2018-05-06 22:16:3 处理到第5950个文件2018-05-06 22:16:4 处理到第6000个文件2018-05-06 22:16:5 处理到第6050个文件2018-05-06 22:16:5 处理到第6100个文件2018-05-06 22:16:13 处理到第6150个文件2018-05-06 22:16:13 处理到第6200个文件2018-05-06 22:16:14 处理到第6250个文件2018-05-06 22:16:15 处理到第6300个文件2018-05-06 22:16:16 处理到第6350个文件2018-05-06 22:16:17 处理到第6400个文件2018-05-06 22:16:18 处理到第6450个文件2018-05-06 22:16:19 处理到第6500个文件2018-05-06 22:16:21 处理到第6550个文件2018-05-06 22:16:22 处理到第6600个文件2018-05-06 22:16:22 处理到第6650个文件2018-05-06 22:16:23 处理到第6700个文件2018-05-06 22:16:24 处理到第6750个文件2018-05-06 22:16:25 处理到第6800个文件2018-05-06 22:16:26 处理到第6850个文件2018-05-06 22:16:27 处理到第6900个文件2018-05-06 22:16:28 处理到第6950个文件2018-05-06 22:16:36 处理到第7000个文件2018-05-06 22:16:52 处理到第7050个文件2018-05-06 22:16:54 saveTopicDetails函数请求时出现异常Error: ESOCKETTIMEDOUT2018-05-06 22:16:54  url=http://www.55188.com/thread-8303338-705-1.html2018-05-06 22:16:54  title= 粉色魔窟与你同在------第50期(将超前热点分享十即时实盘+宏观调控解盘进行到底)2018-05-06 22:16:54  index=70342018-05-06 22:16:58 saveTopicDetails函数请求时出现异常Error: ETIMEDOUT2018-05-06 22:16:58  url=http://www.55188.com/thread-8303338-715-1.html2018-05-06 22:16:58  title= 粉色魔窟与你同在------第50期(将超前热点分享十即时实盘+宏观调控解盘进行到底)2018-05-06 22:16:58  index=70442018-05-06 22:17:3 处理到第7100个文件2018-05-06 22:17:10 处理到第7150个文件2018-05-06 22:17:19 处理到第7200个文件2018-05-06 22:17:29 处理到第7250个文件2018-05-06 22:17:37 处理到第7300个文件2018-05-06 22:17:45 处理到第7350个文件2018-05-06 22:17:47 处理到第7400个文件2018-05-06 22:17:50 处理到第7450个文件2018-05-06 22:17:58 处理到第7500个文件2018-05-06 22:18:1 处理到第7550个文件2018-05-06 22:18:7 处理到第7600个文件2018-05-06 22:18:8 处理到第7650个文件2018-05-06 22:18:9 处理到第7700个文件2018-05-06 22:18:9 处理到第7750个文件2018-05-06 22:18:10 处理到第7800个文件2018-05-06 22:18:11 处理到第7850个文件2018-05-06 22:18:12 处理到第7900个文件2018-05-06 22:18:13 处理到第7950个文件2018-05-06 22:18:18 处理到第8000个文件2018-05-06 22:18:28 处理到第8050个文件2018-05-06 22:18:45 处理到第8100个文件2018-05-06 22:18:53 处理到第8150个文件2018-05-06 22:19:3 处理到第8200个文件2018-05-06 22:19:12 处理到第8250个文件2018-05-06 22:19:25 处理到第8300个文件2018-05-06 22:19:34 处理到第8350个文件2018-05-06 22:19:43 处理到第8400个文件2018-05-06 22:19:53 处理到第8450个文件2018-05-06 22:20:5 处理到第8500个文件2018-05-06 22:20:14 处理到第8550个文件2018-05-06 22:20:26 处理到第8600个文件2018-05-06 22:20:34 处理到第8650个文件2018-05-06 22:20:43 处理到第8700个文件2018-05-06 22:20:55 处理到第8750个文件2018-05-06 22:21:10 处理到第8800个文件2018-05-06 22:21:20 处理到第8850个文件2018-05-06 22:21:28 处理到第8900个文件2018-05-06 22:21:38 处理到第8950个文件2018-05-06 22:21:50 处理到第9000个文件2018-05-06 22:22:3 处理到第9050个文件2018-05-06 22:22:15 处理到第9100个文件2018-05-06 22:22:16 处理到第9150个文件2018-05-06 22:22:19 处理到第9200个文件2018-05-06 22:22:25 处理到第9250个文件2018-05-06 22:22:27 处理到第9300个文件2018-05-06 22:22:28 处理到第9350个文件2018-05-06 22:22:32 处理到第9400个文件2018-05-06 22:22:41 处理到第9450个文件2018-05-06 22:22:49 处理到第9500个文件2018-05-06 22:23:0 处理到第9550个文件2018-05-06 22:23:7 处理到第9600个文件2018-05-06 22:23:8 处理到第9650个文件2018-05-06 22:23:10 处理到第9700个文件2018-05-06 22:23:27 处理到第9750个文件C:\Users\horn1\Desktop\node.js\66-理想论坛爬虫1.09 - insertdb.js>node lixiang.js 选择【再续前缘】输入0,选择【新的开始】输入页码,以逗号分隔: 0【再续前缘】上次未完成列表中有27个文件上次下载失败列表中有16个文件拟生成文件43个C:\Users\horn1\Desktop\node.js\66-理想论坛爬虫1.09 - insertdb.js>node checkfiles.js编号为2675的文件缺失编号为2676的文件缺失编号为2677的文件缺失编号为2678的文件缺失编号为2680的文件缺失编号为2681的文件缺失编号为2682的文件缺失编号为2683的文件缺失编号为2684的文件缺失编号为2685的文件缺失编号为2686的文件缺失编号为2687的文件缺失编号为2688的文件缺失编号为2689的文件缺失编号为2690的文件缺失编号为2691的文件缺失编号为2692的文件缺失编号为2693的文件缺失编号为2694的文件缺失编号为2695的文件缺失编号为2696的文件缺失编号为2697的文件缺失编号为2698的文件缺失编号为2699的文件缺失编号为2700的文件缺失编号为2701的文件缺失编号为2702的文件缺失编号为2703的文件缺失编号为2704的文件缺失编号为2706的文件缺失编号为2708的文件缺失编号为2709的文件缺失编号为2710的文件缺失编号为2711的文件缺失编号为2712的文件缺失编号为2713的文件缺失编号为2714的文件缺失编号为2715的文件缺失编号为2716的文件缺失编号为2717的文件缺失编号为2718的文件缺失编号为2719的文件缺失编号为2720的文件缺失编号为2721的文件缺失编号为2722的文件缺失编号为2723的文件缺失编号为2724的文件缺失编号为2725的文件缺失编号为2726的文件缺失编号为2727的文件缺失编号为2728的文件缺失编号为2731的文件缺失编号为2732的文件缺失编号为2733的文件缺失编号为2734的文件缺失编号为2735的文件缺失编号为2736的文件缺失编号为2737的文件缺失编号为2738的文件缺失编号为2739的文件缺失编号为2740的文件缺失编号为2741的文件缺失编号为2742的文件缺失编号为2743的文件缺失编号为2744的文件缺失编号为2745的文件缺失编号为2746的文件缺失编号为2747的文件缺失编号为2748的文件缺失编号为2749的文件缺失编号为2750的文件缺失编号为2752的文件缺失编号为2753的文件缺失编号为2754的文件缺失编号为2755的文件缺失编号为2756的文件缺失编号为2757的文件缺失编号为2758的文件缺失编号为2759的文件缺失编号为2760的文件缺失编号为2761的文件缺失编号为2762的文件缺失编号为2763的文件缺失编号为2764的文件缺失编号为2765的文件缺失编号为2766的文件缺失编号为2767的文件缺失编号为2768的文件缺失编号为2769的文件缺失编号为2770的文件缺失编号为2771的文件缺失编号为2772的文件缺失编号为2773的文件缺失编号为2774的文件缺失编号为2775的文件缺失编号为2776的文件缺失编号为2777的文件缺失编号为2778的文件缺失编号为2779的文件缺失编号为2780的文件缺失编号为2781的文件缺失编号为2782的文件缺失编号为2784的文件缺失编号为2786的文件缺失编号为2787的文件缺失编号为2788的文件缺失编号为2789的文件缺失编号为2790的文件缺失编号为2791的文件缺失编号为2792的文件缺失编号为2793的文件缺失编号为2794的文件缺失编号为2795的文件缺失编号为2796的文件缺失编号为2797的文件缺失编号为2798的文件缺失编号为2799的文件缺失编号为2800的文件缺失编号为2801的文件缺失编号为5182的文件缺失编号为5185的文件缺失编号为5186的文件缺失编号为5187的文件缺失编号为5188的文件缺失编号为5189的文件缺失编号为5190的文件缺失编号为5192的文件缺失编号为5193的文件缺失编号为5194的文件缺失编号为5195的文件缺失编号为5196的文件缺失编号为5197的文件缺失编号为5198的文件缺失编号为5199的文件缺失编号为5200的文件缺失编号为5201的文件缺失编号为5202的文件缺失编号为5205的文件缺失编号为5206的文件缺失编号为5207的文件缺失编号为5208的文件缺失编号为5209的文件缺失编号为5210的文件缺失编号为5211的文件缺失编号为5212的文件缺失编号为5213的文件缺失编号为5214的文件缺失编号为5215的文件缺失编号为5216的文件缺失编号为5217的文件缺失编号为5218的文件缺失编号为5219的文件缺失编号为5220的文件缺失编号为5221的文件缺失编号为5222的文件缺失编号为5223的文件缺失编号为5224的文件缺失编号为5225的文件缺失编号为5226的文件缺失编号为5227的文件缺失编号为5228的文件缺失编号为5229的文件缺失编号为5230的文件缺失编号为5231的文件缺失编号为5232的文件缺失编号为5233的文件缺失编号为5234的文件缺失编号为5235的文件缺失编号为5236的文件缺失编号为5237的文件缺失编号为5238的文件缺失编号为5239的文件缺失编号为5240的文件缺失编号为5241的文件缺失编号为5244的文件缺失编号为5245的文件缺失编号为5246的文件缺失编号为5247的文件缺失编号为5248的文件缺失编号为5249的文件缺失编号为5250的文件缺失编号为5251的文件缺失编号为5252的文件缺失编号为5253的文件缺失编号为5254的文件缺失编号为5255的文件缺失编号为5256的文件缺失编号为5257的文件缺失编号为5258的文件缺失编号为5259的文件缺失编号为5260的文件缺失编号为5261的文件缺失编号为5262的文件缺失编号为5263的文件缺失编号为5264的文件缺失编号为5265的文件缺失编号为5266的文件缺失编号为5267的文件缺失编号为5268的文件缺失编号为5269的文件缺失编号为5270的文件缺失编号为5271的文件缺失编号为5272的文件缺失编号为5273的文件缺失编号为5275的文件缺失编号为5277的文件缺失编号为5278的文件缺失编号为5279的文件缺失编号为5280的文件缺失编号为5281的文件缺失编号为5282的文件缺失编号为5283的文件缺失编号为5284的文件缺失编号为5285的文件缺失编号为5286的文件缺失编号为5287的文件缺失编号为5288的文件缺失编号为5289的文件缺失编号为5290的文件缺失编号为5291的文件缺失编号为5292的文件缺失编号为5293的文件缺失编号为5294的文件缺失编号为5295的文件缺失编号为5296的文件缺失编号为5297的文件缺失编号为5298的文件缺失编号为5299的文件缺失编号为5300的文件缺失编号为5301的文件缺失编号为5302的文件缺失编号为5303的文件缺失编号为5304的文件缺失编号为5305的文件缺失编号为5306的文件缺失编号为5307的文件缺失编号为5308的文件缺失编号为5309的文件缺失编号为5310的文件缺失编号为5311的文件缺失编号为5312的文件缺失编号为5313的文件缺失编号为5314的文件缺失编号为5315的文件缺失编号为5316的文件缺失编号为5318的文件缺失编号为5319的文件缺失编号为5320的文件缺失编号为5321的文件缺失编号为5322的文件缺失编号为5323的文件缺失编号为5324的文件缺失编号为5325的文件缺失编号为5326的文件缺失编号为5327的文件缺失编号为5328的文件缺失编号为5329的文件缺失编号为5330的文件缺失编号为5331的文件缺失编号为5332的文件缺失编号为5333的文件缺失编号为5334的文件缺失编号为5335的文件缺失编号为5336的文件缺失编号为5337的文件缺失编号为5338的文件缺失编号为5339的文件缺失编号为5340的文件缺失编号为5341的文件缺失编号为5342的文件缺失编号为5343的文件缺失编号为5344的文件缺失编号为5345的文件缺失编号为5346的文件缺失编号为5347的文件缺失编号为5348的文件缺失编号为5349的文件缺失编号为5350的文件缺失编号为5351的文件缺失编号为5352的文件缺失编号为5353的文件缺失编号为5354的文件缺失编号为5355的文件缺失编号为5356的文件缺失编号为5357的文件缺失编号为5358的文件缺失编号为5359的文件缺失编号为5360的文件缺失编号为5361的文件缺失编号为5362的文件缺失编号为5363的文件缺失编号为5364的文件缺失编号为5365的文件缺失编号为5366的文件缺失编号为5367的文件缺失编号为5370的文件缺失编号为5371的文件缺失编号为5372的文件缺失编号为5373的文件缺失编号为5374的文件缺失编号为5375的文件缺失编号为5376的文件缺失编号为5377的文件缺失编号为5378的文件缺失编号为5379的文件缺失编号为5380的文件缺失编号为5381的文件缺失编号为5382的文件缺失编号为5383的文件缺失编号为5384的文件缺失编号为5385的文件缺失编号为5386的文件缺失编号为5387的文件缺失编号为5388的文件缺失编号为5389的文件缺失编号为5390的文件缺失编号为5391的文件缺失编号为5392的文件缺失编号为5393的文件缺失编号为5394的文件缺失编号为5395的文件缺失编号为5396的文件缺失编号为5397的文件缺失编号为5398的文件缺失编号为5399的文件缺失编号为5400的文件缺失编号为5401的文件缺失编号为5402的文件缺失编号为5403的文件缺失编号为5404的文件缺失编号为5405的文件缺失编号为5406的文件缺失编号为5409的文件缺失编号为5410的文件缺失编号为5411的文件缺失编号为5412的文件缺失编号为5413的文件缺失编号为5414的文件缺失编号为5415的文件缺失编号为5416的文件缺失编号为5417的文件缺失编号为5418的文件缺失编号为5419的文件缺失编号为5420的文件缺失编号为5421的文件缺失编号为5422的文件缺失编号为5423的文件缺失编号为5424的文件缺失编号为5425的文件缺失编号为5426的文件缺失编号为5427的文件缺失编号为5428的文件缺失编号为5429的文件缺失编号为5430的文件缺失编号为5431的文件缺失编号为5432的文件缺失编号为5433的文件缺失编号为5434的文件缺失编号为5435的文件缺失编号为5436的文件缺失编号为5437的文件缺失编号为5438的文件缺失编号为5439的文件缺失编号为5440的文件缺失编号为5441的文件缺失编号为5442的文件缺失编号为5443的文件缺失编号为5444的文件缺失编号为5445的文件缺失编号为5446的文件缺失编号为5447的文件缺失编号为5448的文件缺失编号为5450的文件缺失编号为5451的文件缺失编号为5452的文件缺失编号为5453的文件缺失编号为5454的文件缺失编号为5455的文件缺失编号为5456的文件缺失编号为5457的文件缺失编号为5458的文件缺失编号为5459的文件缺失编号为5460的文件缺失编号为5461的文件缺失编号为5462的文件缺失编号为5463的文件缺失编号为5464的文件缺失编号为5465的文件缺失编号为5466的文件缺失编号为5467的文件缺失编号为5468的文件缺失编号为5469的文件缺失编号为5470的文件缺失编号为5471的文件缺失编号为5472的文件缺失编号为5473的文件缺失编号为5474的文件缺失编号为5475的文件缺失编号为5476的文件缺失编号为5477的文件缺失编号为5478的文件缺失编号为5479的文件缺失编号为5480的文件缺失编号为5481的文件缺失编号为5482的文件缺失编号为5483的文件缺失编号为5484的文件缺失编号为5485的文件缺失编号为5486的文件缺失编号为5487的文件缺失编号为5488的文件缺失编号为5489的文件缺失编号为5490的文件缺失编号为5491的文件缺失编号为5492的文件缺失编号为5493的文件缺失编号为5494的文件缺失编号为5495的文件缺失编号为5496的文件缺失编号为5498的文件缺失编号为5500的文件缺失编号为5501的文件缺失编号为5502的文件缺失编号为5503的文件缺失编号为5504的文件缺失编号为5505的文件缺失编号为5506的文件缺失编号为5507的文件缺失编号为5508的文件缺失编号为5509的文件缺失编号为5510的文件缺失编号为5511的文件缺失编号为5512的文件缺失编号为5513的文件缺失编号为5514的文件缺失编号为5515的文件缺失编号为5516的文件缺失编号为5517的文件缺失编号为5518的文件缺失编号为5519的文件缺失编号为5520的文件缺失编号为5521的文件缺失编号为5522的文件缺失编号为5523的文件缺失编号为5524的文件缺失编号为5525的文件缺失编号为5526的文件缺失编号为5527的文件缺失编号为5528的文件缺失编号为5529的文件缺失编号为5530的文件缺失编号为5531的文件缺失编号为5532的文件缺失编号为5533的文件缺失编号为5534的文件缺失编号为5535的文件缺失编号为5536的文件缺失编号为5537的文件缺失编号为5538的文件缺失编号为5539的文件缺失编号为5540的文件缺失编号为5541的文件缺失编号为5542的文件缺失编号为5543的文件缺失编号为5545的文件缺失编号为5546的文件缺失编号为5547的文件缺失编号为5548的文件缺失编号为5551的文件缺失编号为5554的文件缺失编号为5902的文件缺失编号为5903的文件缺失编号为5907的文件缺失编号为5908的文件缺失编号为5909的文件缺失编号为5910的文件缺失编号为5911的文件缺失编号为5912的文件缺失编号为5913的文件缺失编号为5914的文件缺失编号为5915的文件缺失编号为5916的文件缺失编号为5917的文件缺失编号为5918的文件缺失编号为5919的文件缺失编号为5921的文件缺失编号为5922的文件缺失编号为5923的文件缺失编号为5924的文件缺失编号为5925的文件缺失编号为5926的文件缺失编号为5927的文件缺失编号为5929的文件缺失编号为5930的文件缺失编号为5931的文件缺失编号为5932的文件缺失编号为5933的文件缺失编号为5934的文件缺失编号为5935的文件缺失编号为5936的文件缺失编号为5937的文件缺失编号为5938的文件缺失编号为5939的文件缺失编号为5940的文件缺失编号为5941的文件缺失编号为5942的文件缺失编号为5943的文件缺失编号为5944的文件缺失编号为5945的文件缺失编号为5946的文件缺失编号为5947的文件缺失编号为5948的文件缺失编号为5949的文件缺失编号为5950的文件缺失编号为5951的文件缺失编号为5952的文件缺失编号为5953的文件缺失编号为5954的文件缺失编号为5955的文件缺失编号为5956的文件缺失编号为5957的文件缺失编号为5958的文件缺失编号为5961的文件缺失编号为5962的文件缺失编号为5963的文件缺失编号为5964的文件缺失编号为5965的文件缺失编号为5966的文件缺失编号为5967的文件缺失编号为5968的文件缺失编号为5969的文件缺失编号为5970的文件缺失编号为5971的文件缺失编号为5972的文件缺失编号为5973的文件缺失编号为5974的文件缺失编号为5975的文件缺失编号为5976的文件缺失编号为5977的文件缺失编号为5978的文件缺失编号为5979的文件缺失编号为5980的文件缺失编号为5981的文件缺失编号为5982的文件缺失编号为5983的文件缺失编号为5984的文件缺失编号为5985的文件缺失编号为5986的文件缺失编号为5987的文件缺失编号为5988的文件缺失编号为5989的文件缺失编号为5990的文件缺失编号为5991的文件缺失编号为5992的文件缺失编号为5993的文件缺失编号为5994的文件缺失编号为5995的文件缺失编号为5996的文件缺失编号为5997的文件缺失编号为5998的文件缺失编号为5999的文件缺失编号为6000的文件缺失编号为6001的文件缺失编号为6002的文件缺失编号为6003的文件缺失编号为6004的文件缺失编号为6005的文件缺失编号为6006的文件缺失编号为6007的文件缺失编号为6009的文件缺失编号为6010的文件缺失编号为6012的文件缺失编号为6013的文件缺失编号为6014的文件缺失编号为6015的文件缺失编号为6016的文件缺失编号为6017的文件缺失编号为6018的文件缺失编号为6019的文件缺失编号为6020的文件缺失编号为6021的文件缺失编号为6022的文件缺失编号为6023的文件缺失编号为6024的文件缺失编号为6025的文件缺失编号为6026的文件缺失编号为6027的文件缺失编号为6028的文件缺失编号为6029的文件缺失编号为6030的文件缺失编号为6031的文件缺失编号为6032的文件缺失编号为6033的文件缺失编号为6034的文件缺失编号为6035的文件缺失编号为6036的文件缺失编号为6037的文件缺失编号为6038的文件缺失编号为6039的文件缺失编号为6040的文件缺失编号为6041的文件缺失编号为6042的文件缺失编号为6043的文件缺失编号为6044的文件缺失编号为6045的文件缺失编号为6046的文件缺失编号为6047的文件缺失编号为6048的文件缺失编号为6049的文件缺失编号为6050的文件缺失编号为6051的文件缺失编号为6052的文件缺失编号为6053的文件缺失编号为6054的文件缺失编号为6056的文件缺失编号为6057的文件缺失编号为6058的文件缺失编号为6059的文件缺失编号为6060的文件缺失编号为6061的文件缺失编号为6062的文件缺失编号为6063的文件缺失编号为6064的文件缺失编号为6065的文件缺失编号为6066的文件缺失编号为6067的文件缺失编号为6068的文件缺失编号为6069的文件缺失编号为6070的文件缺失编号为6071的文件缺失编号为6072的文件缺失编号为6073的文件缺失编号为6074的文件缺失编号为6075的文件缺失编号为6076的文件缺失编号为6077的文件缺失编号为6078的文件缺失编号为6079的文件缺失编号为6080的文件缺失编号为6081的文件缺失编号为6082的文件缺失编号为6083的文件缺失编号为6084的文件缺失编号为6085的文件缺失编号为6086的文件缺失编号为6087的文件缺失编号为6088的文件缺失编号为6089的文件缺失编号为6090的文件缺失编号为6091的文件缺失编号为6092的文件缺失编号为6093的文件缺失编号为6094的文件缺失编号为6095的文件缺失编号为6096的文件缺失编号为6097的文件缺失编号为6098的文件缺失编号为6099的文件缺失编号为6100的文件缺失编号为6101的文件缺失编号为6102的文件缺失编号为6103的文件缺失编号为6104的文件缺失编号为6105的文件缺失编号为6106的文件缺失编号为6130的文件缺失编号为6131的文件缺失编号为6132的文件缺失编号为6133的文件缺失编号为6135的文件缺失编号为6136的文件缺失编号为6137的文件缺失编号为6138的文件缺失编号为6139的文件缺失编号为6140的文件缺失编号为6141的文件缺失编号为6142的文件缺失编号为6143的文件缺失编号为6144的文件缺失编号为6146的文件缺失编号为6147的文件缺失编号为6148的文件缺失编号为6149的文件缺失编号为6151的文件缺失编号为6152的文件缺失编号为6153的文件缺失编号为6154的文件缺失编号为6155的文件缺失编号为6156的文件缺失编号为6157的文件缺失编号为6158的文件缺失编号为6159的文件缺失编号为6160的文件缺失编号为6161的文件缺失编号为6162的文件缺失编号为6163的文件缺失编号为6164的文件缺失编号为6165的文件缺失编号为6166的文件缺失编号为6167的文件缺失编号为6168的文件缺失编号为6169的文件缺失编号为6170的文件缺失编号为6171的文件缺失编号为6172的文件缺失编号为6173的文件缺失编号为6174的文件缺失编号为6175的文件缺失编号为6176的文件缺失编号为6177的文件缺失编号为6178的文件缺失编号为6179的文件缺失编号为6180的文件缺失编号为6181的文件缺失编号为6182的文件缺失编号为6183的文件缺失编号为6184的文件缺失编号为6185的文件缺失编号为6186的文件缺失编号为6187的文件缺失编号为6188的文件缺失编号为6189的文件缺失编号为6190的文件缺失编号为6191的文件缺失编号为6194的文件缺失编号为6195的文件缺失编号为6196的文件缺失编号为6197的文件缺失编号为6198的文件缺失编号为6199的文件缺失编号为6200的文件缺失编号为6201的文件缺失编号为6202的文件缺失编号为6203的文件缺失编号为6204的文件缺失编号为6205的文件缺失编号为6206的文件缺失编号为6207的文件缺失编号为6208的文件缺失编号为6209的文件缺失编号为6210的文件缺失编号为6211的文件缺失编号为6212的文件缺失编号为6213的文件缺失编号为6214的文件缺失编号为6215的文件缺失编号为6216的文件缺失编号为6217的文件缺失编号为6218的文件缺失编号为6219的文件缺失编号为6220的文件缺失编号为6221的文件缺失编号为6222的文件缺失编号为6223的文件缺失编号为6224的文件缺失编号为6225的文件缺失编号为6226的文件缺失编号为6227的文件缺失编号为6228的文件缺失编号为6229的文件缺失编号为6230的文件缺失编号为6231的文件缺失编号为6232的文件缺失编号为6233的文件缺失编号为6234的文件缺失编号为6235的文件缺失编号为6236的文件缺失编号为6237的文件缺失编号为6238的文件缺失编号为6239的文件缺失编号为6240的文件缺失编号为6241的文件缺失编号为6242的文件缺失编号为6244的文件缺失编号为6245的文件缺失编号为6246的文件缺失编号为6247的文件缺失编号为6248的文件缺失编号为6249的文件缺失编号为6250的文件缺失编号为6251的文件缺失编号为6252的文件缺失编号为6253的文件缺失编号为6254的文件缺失编号为6255的文件缺失编号为6256的文件缺失编号为6257的文件缺失编号为6258的文件缺失编号为6259的文件缺失编号为6260的文件缺失编号为6261的文件缺失编号为6262的文件缺失编号为6263的文件缺失编号为6264的文件缺失编号为6265的文件缺失编号为6266的文件缺失编号为6267的文件缺失编号为6268的文件缺失编号为6269的文件缺失编号为6270的文件缺失编号为6271的文件缺失编号为6272的文件缺失编号为6273的文件缺失编号为6274的文件缺失编号为6275的文件缺失编号为6276的文件缺失编号为6277的文件缺失编号为6278的文件缺失编号为6279的文件缺失编号为6280的文件缺失编号为6281的文件缺失编号为6282的文件缺失编号为6283的文件缺失编号为6284的文件缺失编号为6285的文件缺失编号为6286的文件缺失编号为6287的文件缺失编号为6288的文件缺失编号为6289的文件缺失编号为6290的文件缺失编号为6291的文件缺失编号为6292的文件缺失编号为6293的文件缺失编号为6294的文件缺失编号为6295的文件缺失编号为6296的文件缺失编号为6297的文件缺失编号为6298的文件缺失编号为6299的文件缺失编号为6300的文件缺失编号为6301的文件缺失编号为6302的文件缺失编号为6303的文件缺失编号为6304的文件缺失编号为6305的文件缺失编号为6306的文件缺失编号为6307的文件缺失编号为6308的文件缺失编号为6309的文件缺失编号为6310的文件缺失编号为6311的文件缺失编号为6312的文件缺失编号为6313的文件缺失编号为6314的文件缺失编号为6315的文件缺失编号为6318的文件缺失编号为6319的文件缺失编号为6320的文件缺失编号为6321的文件缺失编号为6322的文件缺失编号为6323的文件缺失编号为6324的文件缺失编号为6325的文件缺失编号为6326的文件缺失编号为6327的文件缺失编号为6328的文件缺失编号为6329的文件缺失编号为6330的文件缺失编号为6331的文件缺失编号为6332的文件缺失编号为6333的文件缺失编号为6334的文件缺失编号为6335的文件缺失编号为6336的文件缺失编号为6337的文件缺失编号为6338的文件缺失编号为6339的文件缺失编号为6340的文件缺失编号为6341的文件缺失编号为6342的文件缺失编号为6343的文件缺失编号为6344的文件缺失编号为6345的文件缺失编号为6346的文件缺失编号为6347的文件缺失编号为6348的文件缺失编号为6349的文件缺失编号为6350的文件缺失编号为6351的文件缺失编号为6352的文件缺失编号为6353的文件缺失编号为6355的文件缺失编号为6357的文件缺失编号为6358的文件缺失编号为6359的文件缺失编号为6360的文件缺失编号为6361的文件缺失编号为6362的文件缺失编号为6363的文件缺失编号为6364的文件缺失编号为6365的文件缺失编号为6366的文件缺失编号为6367的文件缺失编号为6368的文件缺失编号为6369的文件缺失编号为6370的文件缺失编号为6371的文件缺失编号为6372的文件缺失编号为6373的文件缺失编号为6374的文件缺失编号为6375的文件缺失编号为6376的文件缺失编号为6377的文件缺失编号为6378的文件缺失编号为6379的文件缺失编号为6380的文件缺失编号为6381的文件缺失编号为6382的文件缺失编号为6383的文件缺失编号为6384的文件缺失编号为6385的文件缺失编号为6386的文件缺失编号为6387的文件缺失编号为6388的文件缺失编号为6389的文件缺失编号为6390的文件缺失编号为6391的文件缺失编号为6392的文件缺失编号为6393的文件缺失编号为6394的文件缺失编号为6395的文件缺失编号为6396的文件缺失编号为6397的文件缺失编号为6398的文件缺失编号为6399的文件缺失编号为6400的文件缺失编号为6401的文件缺失编号为6402的文件缺失编号为6404的文件缺失编号为6405的文件缺失编号为6406的文件缺失编号为6407的文件缺失编号为6408的文件缺失编号为6409的文件缺失编号为6410的文件缺失编号为6411的文件缺失编号为6412的文件缺失编号为6413的文件缺失编号为6414的文件缺失编号为6415的文件缺失编号为6416的文件缺失编号为6417的文件缺失编号为6418的文件缺失编号为6419的文件缺失编号为6420的文件缺失编号为6421的文件缺失编号为6422的文件缺失编号为6423的文件缺失编号为6424的文件缺失编号为6425的文件缺失编号为6426的文件缺失编号为6427的文件缺失编号为6428的文件缺失编号为6429的文件缺失编号为6430的文件缺失编号为6431的文件缺失编号为6432的文件缺失编号为6433的文件缺失编号为6434的文件缺失编号为6435的文件缺失编号为6436的文件缺失编号为6437的文件缺失编号为6438的文件缺失编号为6439的文件缺失编号为6440的文件缺失编号为6441的文件缺失编号为6442的文件缺失编号为6443的文件缺失编号为6444的文件缺失编号为6445的文件缺失编号为6446的文件缺失编号为6447的文件缺失编号为6448的文件缺失编号为6449的文件缺失编号为6450的文件缺失编号为6451的文件缺失编号为6452的文件缺失编号为6453的文件缺失编号为6454的文件缺失编号为6455的文件缺失编号为6456的文件缺失编号为6457的文件缺失编号为6458的文件缺失编号为6459的文件缺失编号为6460的文件缺失编号为6461的文件缺失编号为6462的文件缺失编号为6463的文件缺失编号为6465的文件缺失编号为6467的文件缺失编号为6468的文件缺失编号为6469的文件缺失编号为6470的文件缺失编号为6471的文件缺失编号为6472的文件缺失编号为6473的文件缺失编号为6474的文件缺失编号为6475的文件缺失编号为6476的文件缺失编号为6477的文件缺失编号为6478的文件缺失编号为6479的文件缺失编号为6480的文件缺失编号为6481的文件缺失编号为6482的文件缺失编号为6483的文件缺失编号为6484的文件缺失编号为6485的文件缺失编号为6486的文件缺失编号为6487的文件缺失编号为6488的文件缺失编号为6489的文件缺失编号为6490的文件缺失编号为6491的文件缺失编号为6492的文件缺失编号为6493的文件缺失编号为6494的文件缺失编号为6495的文件缺失编号为6496的文件缺失编号为6497的文件缺失编号为6498的文件缺失编号为6499的文件缺失编号为6500的文件缺失编号为6501的文件缺失编号为6502的文件缺失编号为6503的文件缺失编号为6504的文件缺失编号为6510的文件缺失编号为6511的文件缺失编号为6513的文件缺失编号为6516的文件缺失编号为6517的文件缺失编号为6518的文件缺失编号为6519的文件缺失编号为6520的文件缺失编号为6521的文件缺失编号为6522的文件缺失编号为6524的文件缺失编号为6525的文件缺失编号为6526的文件缺失编号为6527的文件缺失编号为6528的文件缺失编号为6529的文件缺失编号为6530的文件缺失编号为6531的文件缺失编号为6532的文件缺失编号为6533的文件缺失编号为6534的文件缺失编号为6535的文件缺失编号为6536的文件缺失编号为6537的文件缺失编号为6538的文件缺失编号为6539的文件缺失编号为6540的文件缺失编号为6541的文件缺失编号为6542的文件缺失编号为6543的文件缺失编号为6544的文件缺失编号为6545的文件缺失编号为6546的文件缺失编号为6547的文件缺失编号为6548的文件缺失编号为6549的文件缺失编号为6550的文件缺失编号为6551的文件缺失编号为6552的文件缺失编号为6553的文件缺失编号为6554的文件缺失编号为6555的文件缺失编号为6556的文件缺失编号为6557的文件缺失编号为6558的文件缺失编号为6559的文件缺失编号为6560的文件缺失编号为6561的文件缺失编号为6562的文件缺失编号为6563的文件缺失编号为6565的文件缺失编号为6567的文件缺失编号为6568的文件缺失编号为6569的文件缺失编号为6570的文件缺失编号为6571的文件缺失编号为6572的文件缺失编号为6573的文件缺失编号为6574的文件缺失编号为6575的文件缺失编号为6576的文件缺失编号为6577的文件缺失编号为6578的文件缺失编号为6579的文件缺失编号为6580的文件缺失编号为6581的文件缺失编号为6582的文件缺失编号为6583的文件缺失编号为6584的文件缺失编号为6585的文件缺失编号为6586的文件缺失编号为6587的文件缺失编号为6588的文件缺失编号为6589的文件缺失编号为6590的文件缺失编号为6591的文件缺失编号为6592的文件缺失编号为6593的文件缺失编号为6594的文件缺失编号为6595的文件缺失编号为6596的文件缺失编号为6597的文件缺失编号为6598的文件缺失编号为6599的文件缺失编号为6600的文件缺失编号为6601的文件缺失编号为6602的文件缺失编号为6603的文件缺失编号为6604的文件缺失编号为6605的文件缺失编号为6606的文件缺失编号为6607的文件缺失编号为6608的文件缺失编号为6609的文件缺失编号为6610的文件缺失编号为6611的文件缺失编号为6612的文件缺失编号为6615的文件缺失编号为6616的文件缺失编号为6617的文件缺失编号为6618的文件缺失编号为6619的文件缺失编号为6620的文件缺失编号为6621的文件缺失编号为6622的文件缺失编号为6623的文件缺失编号为6624的文件缺失编号为6625的文件缺失编号为6626的文件缺失编号为6627的文件缺失编号为6628的文件缺失编号为6629的文件缺失编号为6630的文件缺失编号为6631的文件缺失编号为6632的文件缺失编号为6633的文件缺失编号为6634的文件缺失编号为6635的文件缺失编号为6636的文件缺失编号为6637的文件缺失编号为6638的文件缺失编号为6639的文件缺失编号为6640的文件缺失编号为6641的文件缺失编号为6642的文件缺失编号为6643的文件缺失编号为6644的文件缺失编号为6645的文件缺失编号为6646的文件缺失编号为6647的文件缺失编号为6648的文件缺失编号为6649的文件缺失编号为6650的文件缺失编号为6651的文件缺失编号为6652的文件缺失编号为6653的文件缺失编号为6654的文件缺失编号为6655的文件缺失编号为6656的文件缺失编号为6657的文件缺失编号为6658的文件缺失编号为6659的文件缺失编号为6660的文件缺失编号为6662的文件缺失编号为6663的文件缺失编号为6664的文件缺失编号为6665的文件缺失编号为6666的文件缺失编号为6667的文件缺失编号为6668的文件缺失编号为6669的文件缺失编号为6670的文件缺失编号为6671的文件缺失编号为6672的文件缺失编号为6673的文件缺失编号为6674的文件缺失编号为6675的文件缺失编号为6676的文件缺失编号为6677的文件缺失编号为6678的文件缺失编号为6679的文件缺失编号为6680的文件缺失编号为6681的文件缺失编号为6682的文件缺失编号为6683的文件缺失编号为6684的文件缺失编号为6685的文件缺失编号为6686的文件缺失编号为6687的文件缺失编号为6688的文件缺失编号为6689的文件缺失编号为6690的文件缺失编号为6691的文件缺失编号为6692的文件缺失编号为6693的文件缺失编号为6694的文件缺失编号为6695的文件缺失编号为6696的文件缺失编号为6697的文件缺失编号为6698的文件缺失编号为6699的文件缺失编号为6700的文件缺失编号为6701的文件缺失编号为6702的文件缺失编号为6703的文件缺失编号为6704的文件缺失编号为6705的文件缺失编号为6706的文件缺失编号为6707的文件缺失编号为6708的文件缺失编号为6709的文件缺失编号为6710的文件缺失编号为6711的文件缺失编号为6712的文件缺失编号为6713的文件缺失编号为6714的文件缺失编号为6715的文件缺失编号为6716的文件缺失编号为6717的文件缺失编号为6718的文件缺失编号为6719的文件缺失编号为6720的文件缺失编号为6721的文件缺失编号为6724的文件缺失编号为6725的文件缺失编号为6726的文件缺失编号为6727的文件缺失编号为6728的文件缺失编号为6729的文件缺失编号为6730的文件缺失编号为6731的文件缺失编号为6732的文件缺失编号为6733的文件缺失编号为6734的文件缺失编号为6735的文件缺失编号为6736的文件缺失编号为6737的文件缺失编号为6738的文件缺失编号为6739的文件缺失编号为6740的文件缺失编号为6741的文件缺失编号为6742的文件缺失编号为6743的文件缺失编号为6744的文件缺失编号为6745的文件缺失编号为6746的文件缺失编号为6747的文件缺失编号为6748的文件缺失编号为6749的文件缺失编号为6750的文件缺失编号为6751的文件缺失编号为6752的文件缺失编号为6753的文件缺失编号为6754的文件缺失编号为6755的文件缺失编号为6756的文件缺失编号为6757的文件缺失编号为6758的文件缺失编号为6759的文件缺失编号为6760的文件缺失编号为6761的文件缺失编号为6762的文件缺失编号为6763的文件缺失编号为6764的文件缺失编号为6765的文件缺失编号为6766的文件缺失编号为6767的文件缺失编号为6770的文件缺失编号为6771的文件缺失编号为6772的文件缺失编号为6773的文件缺失编号为6774的文件缺失编号为6775的文件缺失编号为6776的文件缺失编号为6777的文件缺失编号为6778的文件缺失编号为6779的文件缺失编号为6780的文件缺失编号为6781的文件缺失编号为6782的文件缺失编号为6783的文件缺失编号为6784的文件缺失编号为6785的文件缺失编号为6786的文件缺失编号为6787的文件缺失编号为6788的文件缺失编号为6789的文件缺失编号为6790的文件缺失编号为6791的文件缺失编号为6792的文件缺失编号为6793的文件缺失编号为6794的文件缺失编号为6795的文件缺失编号为6796的文件缺失编号为6797的文件缺失编号为6798的文件缺失编号为6799的文件缺失编号为6800的文件缺失编号为6801的文件缺失编号为6802的文件缺失编号为6803的文件缺失编号为6804的文件缺失编号为6805的文件缺失编号为6806的文件缺失编号为6807的文件缺失编号为6808的文件缺失编号为6809的文件缺失编号为6810的文件缺失编号为6811的文件缺失编号为6812的文件缺失编号为6813的文件缺失编号为6814的文件缺失编号为6815的文件缺失编号为6816的文件缺失编号为6817的文件缺失编号为6818的文件缺失编号为6819的文件缺失编号为6820的文件缺失编号为6822的文件缺失编号为6823的文件缺失编号为6824的文件缺失编号为6825的文件缺失编号为6826的文件缺失编号为6827的文件缺失编号为6828的文件缺失编号为6829的文件缺失编号为6830的文件缺失编号为6831的文件缺失编号为6832的文件缺失编号为6833的文件缺失编号为6834的文件缺失编号为6835的文件缺失编号为6836的文件缺失编号为6837的文件缺失编号为6838的文件缺失编号为6839的文件缺失编号为6840的文件缺失编号为6841的文件缺失编号为6842的文件缺失编号为6843的文件缺失编号为6844的文件缺失编号为6845的文件缺失编号为6846的文件缺失编号为6847的文件缺失编号为6848的文件缺失编号为6849的文件缺失编号为6850的文件缺失编号为6851的文件缺失编号为6852的文件缺失编号为6853的文件缺失编号为6854的文件缺失编号为6855的文件缺失编号为6856的文件缺失编号为6857的文件缺失编号为6858的文件缺失编号为6859的文件缺失编号为6860的文件缺失编号为6861的文件缺失编号为6862的文件缺失编号为6863的文件缺失编号为6864的文件缺失编号为6865的文件缺失编号为6866的文件缺失编号为6867的文件缺失编号为6868的文件缺失编号为6869的文件缺失编号为6870的文件缺失编号为6871的文件缺失编号为6872的文件缺失编号为6873的文件缺失编号为6874的文件缺失编号为6875的文件缺失编号为6876的文件缺失编号为6877的文件缺失编号为6878的文件缺失编号为6881的文件缺失编号为6882的文件缺失编号为6883的文件缺失编号为6884的文件缺失编号为6885的文件缺失编号为6886的文件缺失编号为6887的文件缺失编号为6888的文件缺失编号为6889的文件缺失编号为6890的文件缺失编号为6891的文件缺失编号为6892的文件缺失编号为6893的文件缺失编号为6894的文件缺失编号为6895的文件缺失编号为6896的文件缺失编号为6897的文件缺失编号为6898的文件缺失编号为6899的文件缺失编号为6900的文件缺失编号为6901的文件缺失编号为6902的文件缺失编号为6903的文件缺失编号为6904的文件缺失编号为6905的文件缺失编号为6906的文件缺失编号为6907的文件缺失编号为6908的文件缺失编号为6909的文件缺失编号为6910的文件缺失编号为6911的文件缺失编号为6912的文件缺失编号为6913的文件缺失编号为6914的文件缺失编号为6915的文件缺失编号为6916的文件缺失编号为6917的文件缺失编号为6918的文件缺失编号为6919的文件缺失编号为6920的文件缺失编号为6921的文件缺失编号为6922的文件缺失编号为6923的文件缺失编号为6925的文件缺失编号为6926的文件缺失编号为6928的文件缺失编号为6929的文件缺失编号为6930的文件缺失编号为6931的文件缺失编号为6932的文件缺失编号为6933的文件缺失编号为6934的文件缺失编号为6935的文件缺失编号为6936的文件缺失编号为6937的文件缺失编号为6938的文件缺失编号为6939的文件缺失编号为6940的文件缺失编号为6941的文件缺失编号为6942的文件缺失编号为6943的文件缺失编号为6944的文件缺失编号为6945的文件缺失编号为6946的文件缺失编号为6947的文件缺失编号为6948的文件缺失编号为6949的文件缺失编号为6950的文件缺失编号为6951的文件缺失编号为6952的文件缺失编号为6953的文件缺失编号为6954的文件缺失编号为6955的文件缺失编号为6956的文件缺失编号为6957的文件缺失编号为6958的文件缺失编号为6959的文件缺失编号为6960的文件缺失编号为6961的文件缺失编号为6962的文件缺失编号为6963的文件缺失编号为6964的文件缺失编号为6965的文件缺失编号为6966的文件缺失编号为6967的文件缺失编号为6968的文件缺失编号为6969的文件缺失编号为7342的文件缺失编号为7344的文件缺失编号为7346的文件缺失编号为7348的文件缺失编号为7349的文件缺失编号为7350的文件缺失编号为7352的文件缺失编号为7353的文件缺失编号为7355的文件缺失编号为7356的文件缺失编号为7357的文件缺失编号为7358的文件缺失编号为7359的文件缺失编号为7360的文件缺失编号为7361的文件缺失编号为7362的文件缺失编号为7363的文件缺失编号为7364的文件缺失编号为7365的文件缺失编号为7366的文件缺失编号为7367的文件缺失编号为7368的文件缺失编号为7370的文件缺失编号为7372的文件缺失编号为7373的文件缺失编号为7374的文件缺失编号为7375的文件缺失编号为7376的文件缺失编号为7377的文件缺失编号为7378的文件缺失编号为7379的文件缺失编号为7380的文件缺失编号为7381的文件缺失编号为7382的文件缺失编号为7383的文件缺失编号为7384的文件缺失编号为7385的文件缺失编号为7386的文件缺失编号为7387的文件缺失编号为7388的文件缺失编号为7389的文件缺失编号为7390的文件缺失编号为7391的文件缺失编号为7392的文件缺失编号为7394的文件缺失编号为7395的文件缺失编号为7396的文件缺失编号为7397的文件缺失编号为7398的文件缺失编号为7399的文件缺失编号为7400的文件缺失编号为7401的文件缺失编号为7402的文件缺失编号为7403的文件缺失编号为7404的文件缺失编号为7405的文件缺失编号为7406的文件缺失编号为7407的文件缺失编号为7408的文件缺失编号为7409的文件缺失编号为7411的文件缺失编号为7413的文件缺失编号为7414的文件缺失编号为7415的文件缺失编号为7416的文件缺失编号为7417的文件缺失编号为7418的文件缺失编号为7419的文件缺失编号为7420的文件缺失编号为7421的文件缺失编号为7422的文件缺失编号为7423的文件缺失编号为7424的文件缺失编号为7425的文件缺失编号为7426的文件缺失编号为7427的文件缺失编号为7428的文件缺失编号为7429的文件缺失编号为7430的文件缺失编号为7431的文件缺失编号为7432的文件缺失编号为7433的文件缺失编号为7436的文件缺失编号为7437的文件缺失编号为7438的文件缺失编号为7439的文件缺失编号为7440的文件缺失编号为7441的文件缺失编号为7442的文件缺失编号为7443的文件缺失编号为7444的文件缺失编号为7445的文件缺失编号为7446的文件缺失编号为7447的文件缺失编号为7448的文件缺失编号为7449的文件缺失编号为7450的文件缺失编号为7451的文件缺失编号为7452的文件缺失编号为7453的文件缺失编号为7472的文件缺失编号为7473的文件缺失编号为7474的文件缺失编号为7475的文件缺失编号为7476的文件缺失编号为7477的文件缺失编号为7481的文件缺失编号为7482的文件缺失编号为7484的文件缺失编号为7485的文件缺失编号为7487的文件缺失编号为7488的文件缺失编号为7491的文件缺失编号为7492的文件缺失编号为7493的文件缺失编号为7494的文件缺失编号为7495的文件缺失编号为7496的文件缺失编号为7497的文件缺失编号为7498的文件缺失编号为7499的文件缺失编号为7500的文件缺失编号为7501的文件缺失编号为7502的文件缺失编号为7503的文件缺失编号为7504的文件缺失编号为7505的文件缺失编号为7506的文件缺失编号为7507的文件缺失编号为7508的文件缺失编号为7509的文件缺失编号为7510的文件缺失编号为7511的文件缺失编号为7513的文件缺失编号为7514的文件缺失编号为7515的文件缺失编号为7516的文件缺失编号为7517的文件缺失编号为7518的文件缺失编号为7519的文件缺失编号为7520的文件缺失编号为7521的文件缺失编号为7522的文件缺失编号为7523的文件缺失编号为7524的文件缺失编号为7525的文件缺失编号为7526的文件缺失编号为7527的文件缺失编号为7528的文件缺失编号为7529的文件缺失编号为7530的文件缺失编号为7531的文件缺失编号为7532的文件缺失编号为7533的文件缺失编号为7534的文件缺失编号为7535的文件缺失编号为7536的文件缺失编号为7537的文件缺失编号为7538的文件缺失编号为7539的文件缺失编号为7540的文件缺失编号为7541的文件缺失编号为7542的文件缺失编号为7543的文件缺失编号为7544的文件缺失编号为7545的文件缺失编号为7546的文件缺失编号为7547的文件缺失编号为7568的文件缺失编号为7578的文件缺失编号为7579的文件缺失编号为7580的文件缺失编号为7581的文件缺失编号为7582的文件缺失编号为7583的文件缺失编号为7585的文件缺失编号为7586的文件缺失编号为7588的文件缺失编号为7589的文件缺失编号为7590的文件缺失编号为7591的文件缺失编号为7593的文件缺失编号为7594的文件缺失编号为7595的文件缺失编号为7596的文件缺失编号为7597的文件缺失编号为7598的文件缺失编号为7599的文件缺失编号为7600的文件缺失编号为7601的文件缺失编号为7602的文件缺失编号为7603的文件缺失编号为7604的文件缺失编号为7605的文件缺失编号为7606的文件缺失编号为7607的文件缺失编号为7608的文件缺失编号为7609的文件缺失编号为7610的文件缺失编号为7611的文件缺失编号为7612的文件缺失编号为7613的文件缺失编号为7614的文件缺失编号为7616的文件缺失编号为7618的文件缺失编号为7619的文件缺失编号为7620的文件缺失编号为7621的文件缺失编号为7622的文件缺失编号为7623的文件缺失编号为7624的文件缺失编号为7625的文件缺失编号为7626的文件缺失编号为7627的文件缺失编号为7628的文件缺失编号为7629的文件缺失编号为7630的文件缺失编号为7631的文件缺失编号为7632的文件缺失编号为7633的文件缺失编号为7634的文件缺失编号为7635的文件缺失编号为7636的文件缺失编号为7637的文件缺失编号为7638的文件缺失编号为7639的文件缺失编号为7640的文件缺失编号为7641的文件缺失编号为7642的文件缺失编号为7643的文件缺失编号为7644的文件缺失编号为7645的文件缺失编号为7646的文件缺失编号为7648的文件缺失编号为7649的文件缺失编号为7650的文件缺失编号为7651的文件缺失编号为7652的文件缺失编号为7653的文件缺失编号为7654的文件缺失编号为7655的文件缺失编号为7656的文件缺失编号为7657的文件缺失编号为7658的文件缺失编号为7659的文件缺失编号为7660的文件缺失编号为7661的文件缺失编号为7662的文件缺失编号为7663的文件缺失编号为7664的文件缺失编号为7665的文件缺失编号为7666的文件缺失编号为7667的文件缺失编号为7668的文件缺失编号为7669的文件缺失编号为7670的文件缺失编号为7671的文件缺失编号为7672的文件缺失编号为7673的文件缺失编号为7674的文件缺失编号为7675的文件缺失编号为7676的文件缺失编号为7677的文件缺失编号为7678的文件缺失编号为7679的文件缺失编号为7680的文件缺失编号为7681的文件缺失编号为7682的文件缺失编号为7683的文件缺失编号为7684的文件缺失编号为7685的文件缺失编号为7686的文件缺失编号为7687的文件缺失编号为7688的文件缺失编号为7689的文件缺失编号为7690的文件缺失编号为7691的文件缺失编号为7692的文件缺失编号为7693的文件缺失编号为7694的文件缺失编号为7695的文件缺失编号为7696的文件缺失编号为7697的文件缺失编号为7698的文件缺失编号为7699的文件缺失编号为7700的文件缺失编号为7701的文件缺失编号为7702的文件缺失编号为7703的文件缺失编号为7704的文件缺失编号为7705的文件缺失编号为7706的文件缺失编号为7707的文件缺失编号为7708的文件缺失编号为7709的文件缺失编号为7710的文件缺失编号为7711的文件缺失编号为7712的文件缺失编号为7713的文件缺失编号为7715的文件缺失编号为7717的文件缺失编号为7718的文件缺失编号为7719的文件缺失编号为7720的文件缺失编号为7721的文件缺失编号为7722的文件缺失编号为7723的文件缺失编号为7724的文件缺失编号为7725的文件缺失编号为7726的文件缺失编号为7727的文件缺失编号为7728的文件缺失编号为7729的文件缺失编号为7730的文件缺失编号为7731的文件缺失编号为7732的文件缺失编号为7733的文件缺失编号为7734的文件缺失编号为7735的文件缺失编号为7736的文件缺失编号为7737的文件缺失编号为7738的文件缺失编号为7739的文件缺失编号为7740的文件缺失编号为7741的文件缺失编号为7742的文件缺失编号为7743的文件缺失编号为7744的文件缺失编号为7745的文件缺失编号为7746的文件缺失编号为7747的文件缺失编号为7748的文件缺失编号为7749的文件缺失编号为7750的文件缺失编号为7751的文件缺失编号为7752的文件缺失编号为7753的文件缺失编号为7754的文件缺失编号为7755的文件缺失编号为7756的文件缺失编号为7757的文件缺失编号为7758的文件缺失编号为7759的文件缺失编号为7760的文件缺失编号为7761的文件缺失编号为7762的文件缺失编号为7763的文件缺失编号为7764的文件缺失编号为7765的文件缺失编号为7766的文件缺失编号为7767的文件缺失编号为7768的文件缺失编号为7769的文件缺失编号为7770的文件缺失编号为7771的文件缺失编号为7772的文件缺失编号为7773的文件缺失编号为7776的文件缺失编号为7777的文件缺失编号为7778的文件缺失编号为7779的文件缺失编号为7780的文件缺失编号为7781的文件缺失编号为7782的文件缺失编号为7783的文件缺失编号为7784的文件缺失编号为7785的文件缺失编号为7786的文件缺失编号为7787的文件缺失编号为7788的文件缺失编号为7789的文件缺失编号为7790的文件缺失编号为7791的文件缺失编号为7792的文件缺失编号为7793的文件缺失编号为7794的文件缺失编号为7795的文件缺失编号为7796的文件缺失编号为7797的文件缺失编号为7798的文件缺失编号为7799的文件缺失编号为7800的文件缺失编号为7801的文件缺失编号为7802的文件缺失编号为7803的文件缺失编号为7804的文件缺失编号为7805的文件缺失编号为7806的文件缺失编号为7807的文件缺失编号为7808的文件缺失编号为7809的文件缺失编号为7810的文件缺失编号为7811的文件缺失编号为7812的文件缺失编号为7813的文件缺失编号为7814的文件缺失编号为7815的文件缺失编号为7816的文件缺失编号为7817的文件缺失编号为7818的文件缺失编号为7819的文件缺失编号为7820的文件缺失编号为7821的文件缺失编号为7822的文件缺失编号为7823的文件缺失编号为7824的文件缺失编号为7825的文件缺失编号为7826的文件缺失编号为7827的文件缺失编号为7828的文件缺失编号为7830的文件缺失编号为7831的文件缺失编号为7832的文件缺失编号为7833的文件缺失编号为7834的文件缺失编号为7835的文件缺失编号为7836的文件缺失编号为7837的文件缺失编号为7838的文件缺失编号为7839的文件缺失编号为7840的文件缺失编号为7841的文件缺失编号为7842的文件缺失编号为7843的文件缺失编号为7844的文件缺失编号为7845的文件缺失编号为7846的文件缺失编号为7847的文件缺失编号为7848的文件缺失编号为7849的文件缺失编号为7850的文件缺失编号为7851的文件缺失编号为7852的文件缺失编号为7853的文件缺失编号为7854的文件缺失编号为7855的文件缺失编号为7856的文件缺失编号为7857的文件缺失编号为7858的文件缺失编号为7859的文件缺失编号为7860的文件缺失编号为7861的文件缺失编号为7862的文件缺失编号为7863的文件缺失编号为7864的文件缺失编号为7865的文件缺失编号为7866的文件缺失编号为7867的文件缺失编号为7868的文件缺失编号为7869的文件缺失编号为7870的文件缺失编号为7871的文件缺失编号为7872的文件缺失编号为7873的文件缺失编号为7874的文件缺失编号为7875的文件缺失编号为7876的文件缺失编号为7877的文件缺失编号为7878的文件缺失编号为7879的文件缺失编号为7880的文件缺失编号为7881的文件缺失编号为7882的文件缺失编号为7883的文件缺失编号为7884的文件缺失编号为7885的文件缺失编号为7888的文件缺失编号为7889的文件缺失编号为7890的文件缺失编号为7891的文件缺失编号为7892的文件缺失编号为7893的文件缺失编号为7894的文件缺失编号为7895的文件缺失编号为7896的文件缺失编号为7897的文件缺失编号为7898的文件缺失编号为7899的文件缺失编号为7900的文件缺失编号为7901的文件缺失编号为7902的文件缺失编号为7903的文件缺失编号为7904的文件缺失编号为7905的文件缺失编号为7906的文件缺失编号为7907的文件缺失编号为7908的文件缺失编号为7909的文件缺失编号为7910的文件缺失编号为7911的文件缺失编号为7912的文件缺失编号为7913的文件缺失编号为7914的文件缺失编号为7915的文件缺失编号为7916的文件缺失编号为7917的文件缺失编号为7918的文件缺失编号为7919的文件缺失编号为7920的文件缺失编号为7921的文件缺失编号为7922的文件缺失编号为7923的文件缺失编号为7924的文件缺失编号为7925的文件缺失编号为7926的文件缺失编号为7927的文件缺失编号为7928的文件缺失编号为7929的文件缺失编号为7930的文件缺失编号为7931的文件缺失编号为7932的文件缺失编号为7933的文件缺失编号为7934的文件缺失编号为7935的文件缺失编号为7936的文件缺失编号为7937的文件缺失编号为7938的文件缺失编号为7939的文件缺失编号为7940的文件缺失编号为7941的文件缺失编号为7942的文件缺失编号为7943的文件缺失编号为7944的文件缺失编号为7945的文件缺失编号为7946的文件缺失编号为7947的文件缺失编号为7948的文件缺失编号为7950的文件缺失编号为7951的文件缺失编号为7952的文件缺失编号为7953的文件缺失编号为7954的文件缺失编号为7956的文件缺失编号为7957的文件缺失编号为7958的文件缺失编号为7959的文件缺失编号为7960的文件缺失编号为7961的文件缺失编号为7962的文件缺失编号为7963的文件缺失编号为7964的文件缺失编号为7965的文件缺失编号为7966的文件缺失编号为7967的文件缺失编号为7968的文件缺失编号为7969的文件缺失编号为7970的文件缺失编号为7971的文件缺失编号为7972的文件缺失编号为7973的文件缺失编号为7974的文件缺失编号为7975的文件缺失编号为7976的文件缺失编号为7977的文件缺失编号为7978的文件缺失编号为7979的文件缺失编号为7980的文件缺失编号为7981的文件缺失编号为7982的文件缺失编号为7989的文件缺失编号为7990的文件缺失编号为7991的文件缺失编号为7993的文件缺失编号为9106的文件缺失编号为9107的文件缺失编号为9108的文件缺失编号为9109的文件缺失编号为9110的文件缺失编号为9111的文件缺失编号为9112的文件缺失编号为9113的文件缺失编号为9114的文件缺失编号为9115的文件缺失编号为9116的文件缺失编号为9117的文件缺失编号为9118的文件缺失编号为9119的文件缺失编号为9120的文件缺失编号为9121的文件缺失编号为9122的文件缺失编号为9123的文件缺失编号为9124的文件缺失编号为9125的文件缺失编号为9127的文件缺失编号为9128的文件缺失编号为9130的文件缺失编号为9131的文件缺失编号为9132的文件缺失编号为9133的文件缺失编号为9134的文件缺失编号为9135的文件缺失编号为9138的文件缺失编号为9139的文件缺失编号为9140的文件缺失编号为9141的文件缺失编号为9142的文件缺失编号为9143的文件缺失编号为9144的文件缺失编号为9145的文件缺失编号为9146的文件缺失编号为9147的文件缺失编号为9148的文件缺失编号为9149的文件缺失编号为9150的文件缺失编号为9151的文件缺失编号为9152的文件缺失编号为9153的文件缺失编号为9154的文件缺失编号为9155的文件缺失编号为9156的文件缺失编号为9157的文件缺失编号为9158的文件缺失编号为9159的文件缺失编号为9160的文件缺失编号为9161的文件缺失编号为9162的文件缺失编号为9163的文件缺失编号为9164的文件缺失编号为9165的文件缺失编号为9166的文件缺失编号为9167的文件缺失编号为9168的文件缺失编号为9170的文件缺失编号为9171的文件缺失编号为9172的文件缺失编号为9173的文件缺失编号为9174的文件缺失编号为9175的文件缺失编号为9176的文件缺失编号为9177的文件缺失编号为9178的文件缺失编号为9179的文件缺失编号为9180的文件缺失编号为9181的文件缺失编号为9182的文件缺失编号为9183的文件缺失编号为9184的文件缺失编号为9185的文件缺失编号为9186的文件缺失编号为9187的文件缺失编号为9188的文件缺失编号为9189的文件缺失编号为9190的文件缺失编号为9191的文件缺失编号为9192的文件缺失编号为9223的文件缺失编号为9224的文件缺失编号为9225的文件缺失编号为9226的文件缺失编号为9229的文件缺失编号为9230的文件缺失编号为9231的文件缺失编号为9233的文件缺失编号为9235的文件缺失编号为9236的文件缺失编号为9237的文件缺失编号为9239的文件缺失编号为9240的文件缺失编号为9241的文件缺失编号为9242的文件缺失编号为9243的文件缺失编号为9244的文件缺失编号为9245的文件缺失编号为9246的文件缺失编号为9247的文件缺失编号为9248的文件缺失编号为9249的文件缺失编号为9250的文件缺失编号为9251的文件缺失编号为9252的文件缺失编号为9253的文件缺失编号为9254的文件缺失编号为9255的文件缺失编号为9256的文件缺失编号为9257的文件缺失编号为9258的文件缺失编号为9259的文件缺失编号为9260的文件缺失编号为9261的文件缺失编号为9262的文件缺失编号为9263的文件缺失编号为9264的文件缺失编号为9265的文件缺失编号为9266的文件缺失编号为9267的文件缺失编号为9268的文件缺失编号为9269的文件缺失编号为9270的文件缺失编号为9271的文件缺失编号为9272的文件缺失编号为9273的文件缺失编号为9274的文件缺失编号为9276的文件缺失编号为9277的文件缺失编号为9279的文件缺失编号为9280的文件缺失编号为9281的文件缺失编号为9282的文件缺失编号为9283的文件缺失编号为9284的文件缺失编号为9285的文件缺失编号为9286的文件缺失编号为9287的文件缺失编号为9288的文件缺失编号为9289的文件缺失编号为9290的文件缺失编号为9291的文件缺失编号为9292的文件缺失编号为9293的文件缺失编号为9294的文件缺失编号为9295的文件缺失编号为9296的文件缺失编号为9297的文件缺失编号为9298的文件缺失编号为9299的文件缺失编号为9300的文件缺失编号为9301的文件缺失编号为9302的文件缺失编号为9303的文件缺失编号为9304的文件缺失编号为9305的文件缺失编号为9306的文件缺失编号为9307的文件缺失编号为9308的文件缺失编号为9309的文件缺失编号为9310的文件缺失编号为9311的文件缺失编号为9312的文件缺失编号为9313的文件缺失编号为9314的文件缺失编号为9316的文件缺失编号为9318的文件缺失编号为9319的文件缺失编号为9320的文件缺失编号为9321的文件缺失编号为9322的文件缺失编号为9323的文件缺失编号为9324的文件缺失编号为9325的文件缺失编号为9326的文件缺失编号为9327的文件缺失编号为9328的文件缺失编号为9329的文件缺失编号为9330的文件缺失编号为9331的文件缺失编号为9332的文件缺失编号为9333的文件缺失编号为9334的文件缺失编号为9335的文件缺失编号为9336的文件缺失编号为9337的文件缺失编号为9338的文件缺失编号为9339的文件缺失编号为9340的文件缺失编号为9341的文件缺失编号为9342的文件缺失编号为9343的文件缺失编号为9344的文件缺失编号为9345的文件缺失编号为9346的文件缺失编号为9347的文件缺失编号为9348的文件缺失编号为9349的文件缺失编号为9350的文件缺失编号为9351的文件缺失编号为9352的文件缺失编号为9353的文件缺失编号为9354的文件缺失编号为9356的文件缺失编号为9357的文件缺失编号为9358的文件缺失编号为9359的文件缺失编号为9360的文件缺失编号为9361的文件缺失编号为9362的文件缺失编号为9363的文件缺失编号为9364的文件缺失编号为9365的文件缺失编号为9366的文件缺失编号为9367的文件缺失编号为9368的文件缺失编号为9369的文件缺失编号为9370的文件缺失编号为9371的文件缺失编号为9372的文件缺失编号为9373的文件缺失编号为9374的文件缺失编号为9375的文件缺失编号为9376的文件缺失编号为9377的文件缺失编号为9378的文件缺失编号为9379的文件缺失编号为9380的文件缺失编号为9381的文件缺失编号为9382的文件缺失编号为9383的文件缺失编号为9384的文件缺失编号为9385的文件缺失编号为9386的文件缺失编号为9387的文件缺失编号为9388的文件缺失编号为9587的文件缺失编号为9588的文件缺失编号为9589的文件缺失编号为9590的文件缺失编号为9591的文件缺失编号为9592的文件缺失编号为9593的文件缺失编号为9594的文件缺失编号为9595的文件缺失编号为9597的文件缺失编号为9598的文件缺失编号为9600的文件缺失编号为9601的文件缺失编号为9602的文件缺失编号为9603的文件缺失编号为9604的文件缺失编号为9605的文件缺失编号为9606的文件缺失编号为9607的文件缺失编号为9608的文件缺失编号为9609的文件缺失编号为9610的文件缺失编号为9611的文件缺失编号为9612的文件缺失编号为9613的文件缺失编号为9614的文件缺失编号为9615的文件缺失编号为9616的文件缺失编号为9617的文件缺失编号为9618的文件缺失编号为9619的文件缺失编号为9620的文件缺失编号为9621的文件缺失编号为9622的文件缺失编号为9623的文件缺失编号为9624的文件缺失编号为9625的文件缺失编号为9626的文件缺失编号为9627的文件缺失编号为9628的文件缺失编号为9629的文件缺失编号为9630的文件缺失编号为9632的文件缺失编号为9633的文件缺失编号为9635的文件缺失编号为9636的文件缺失编号为9637的文件缺失编号为9638的文件缺失编号为9639的文件缺失编号为9640的文件缺失编号为9641的文件缺失编号为9642的文件缺失编号为9643的文件缺失编号为9644的文件缺失编号为9645的文件缺失编号为9646的文件缺失编号为9647的文件缺失编号为9648的文件缺失编号为9649的文件缺失编号为9650的文件缺失编号为9651的文件缺失编号为9652的文件缺失编号为9653的文件缺失编号为9654的文件缺失编号为9655的文件缺失编号为9656的文件缺失编号为9657的文件缺失编号为9658的文件缺失编号为9659的文件缺失编号为9660的文件缺失编号为9661的文件缺失编号为9662的文件缺失编号为9663的文件缺失编号为9664的文件缺失编号为9665的文件缺失编号为9666的文件缺失编号为9667的文件缺失编号为9668的文件缺失编号为9669的文件缺失编号为9670的文件缺失编号为9671的文件缺失编号为9672的文件缺失编号为9673的文件缺失编号为9674的文件缺失编号为9675的文件缺失编号为9676的文件缺失编号为9677的文件缺失编号为9678的文件缺失编号为9679的文件缺失编号为9680的文件缺失编号为9681的文件缺失编号为9682的文件缺失编号为9683的文件缺失编号为9685的文件缺失编号为9686的文件缺失编号为9687的文件缺失编号为9688的文件缺失编号为9689的文件缺失编号为9690的文件缺失编号为9691的文件缺失编号为9692的文件缺失编号为9693的文件缺失编号为9694的文件缺失编号为9695的文件缺失编号为9696的文件缺失编号为9697的文件缺失编号为9698的文件缺失编号为9699的文件缺失编号为9700的文件缺失编号为9702的文件缺失编号为9704的文件缺失总计有2381个文件缺失总计有146727条数据.C:\Users\horn1\Desktop\node.js\66-理想论坛爬虫1.09 - insertdb.js>python insertDB.py拟向数据库插入146727条记录已向数据库插入146727条记录插数据用时40秒

进行检查的checkfiles.js

//======================================================// 在理想论坛帖子下载爬虫生成数据文件后进行检查// 2018年5月6日//======================================================var fs=require('fs');    // 内置文件处理模块var allfiles=[];        // 全部数据文件列表var allInfos=[];        // 数据文件里获得的全部信息//--------------------------------------// 通用函数,返回当前日期时间 数据库记录时间用//--------------------------------------function currTime() {    var date = new Date();    var seperator1 = "-";    var seperator2 = ":";    var month = date.getMonth() + 1;    var strDate = date.getDate();    if (month >= 1 && month <= 9) {        month = "0" + month;    }    if (strDate >= 0 && strDate <= 9) {        strDate = "0" + strDate;    }    var currentdate =date.getFullYear() + seperator1 + month + seperator1 + strDate            + " " + date.getHours() + seperator2 + date.getMinutes()            + seperator2 + date.getSeconds()+ " ";    return currentdate;}//-------------------------------// 得到带颜色(前景色)的文字,用于在控制台输出// text:文字,color:前景色//-------------------------------function coloredText(text,color){    var dic = new Array();    dic["white"] = ['\x1B[37m', '\x1B[39m'];    dic["grey"] = ['\x1B[90m', '\x1B[39m'];    dic["black"] = ['\x1B[30m', '\x1B[39m'];    dic["blue"] = ['\x1B[34m', '\x1B[39m'];    dic["cyan"] = ['\x1B[36m', '\x1B[39m'];    dic["green"] = ['\x1B[32m', '\x1B[39m'];    dic["magenta"] = ['\x1B[35m', '\x1B[39m'];    dic["red"] = ['\x1B[31m', '\x1B[39m'];    dic["yellow"] = ['\x1B[33m', '\x1B[39m'];    return dic[color][0]+text+dic[color][1];}function readFiles(){    if(allfiles.length>0){        var file=allfiles.pop();        fs.readFile(file,'utf8',function(err,data){            if(err){                console.log('读取文件失败,因为'+err);            }else{                var infos=JSON.parse(data);                allInfos=allInfos.concat(infos);            }            readFiles();        });    }else{        console.log('总计有'+allInfos.length+"条数据.");    }}//--------------------------------------// 入口函数//--------------------------------------function main() {    folder='./2018-05-06 21_36_5';// 数据文件所在目录    fs.readdir(folder,function(err,files){        if(err) throw err;        // 预制查找数组        var arr=new Array(9788-1);// 20563是总文件个数,从lixiang.js的输出可以找到,-1因为文件序号从0起        for(var i=0;i<arr.length;i++){            arr[i]=0;        }        // 只遍历一遍        for(var index in files){            var arrTmp=files[index].split(".");            var sn=parseInt(arrTmp[0],10);            arr[sn]=1;            allfiles.push(folder+'/'+files[index]);        }        // 查哪个缺失        var missed=0;        for(var i=0;i<arr.length;i++){            if(arr[i]==0){    // 为零的就是没找到该编号对应的文件的                console.log(coloredText('编号为'+i+'的文件缺失','yellow'));                missed++;            }        }        console.log(coloredText('总计有'+missed+'个文件缺失','red'));        readFiles();    });}// 开始main();

进行插DB的insertDB.py

#------------------------------------------------------------------------------------# insertDB1.01,读取理想论坛爬虫生成的数据,然后写入DB# 2018年4月29日#------------------------------------------------------------------------------------import pymysqlimport timeimport datetimeimport osimport json#------------------------------------# 取得当前时间#------------------------------------def currTime():    currTime=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))    return currTime#------------------------------------# 入口函数#------------------------------------def main(folder):    starttime = datetime.datetime.now()    # 打开目录从文件里取数据    allinfos=[]    for filename in os.listdir(folder):        filePathname=folder+"/"+filename        with open(filePathname,'r',encoding='utf-8') as fObj:            infos=json.load(fObj)            #print("此时info="+str(infos))            allinfos.extend(infos)    print("拟向数据库插入"+str(len(allinfos))+"条记录")    # 打开数据库并插值    conn=pymysql.connect(host=',db='test',charset='utf8')    cur=conn.cursor();    sum=0    for info in allinfos:        try:            arr=[info['楼层'],info['作者'],info['日期'],info['时间'],currTime(),info['url'],info['title'],info['内容']]            count=cur.execute('insert into test.topic18(floor,author,tdate,ttime,addtime,url,title,content) values (%s,%s,%s,%s,%s,%s,%s,%s)',arr)            sum+=count        except Exception as e:            print("出现异常:"+str(e)+",此时info="+str(info))            continue;    conn.commit()    conn.close()    print("已向数据库插入"+str(sum)+"条记录")    # 计算用时    endtime = datetime.datetime.now()    print("插数据用时"+str((endtime - starttime).seconds)+"秒")# 开始main("./2018-05-06 21_36_5")

2018年5月6日22点31分

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,112
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,585
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,431
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,203
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,838
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,922