常春岛资源网 Design By www.syssdc.com
有个朋友在搞留学工作室,经常访问的一个网站叫留学者指南,然而每次都要去访问该网站,显得极其不专业。于是托俺帮忙写脚本去爬他家的东西,我观察了下,这次,我们要爬的东西就有点多了——大概就20多万个文件吧~~~
在20多万个文件中,下载极有可能会被中断,因此需要做下载进度备份,下载进度恢复。
那么针对这样子的需求,我们开始吧!
上代码!
const cheerio = require("cheerio"); //用于处于HTML文档流,用法类似jQuery const http = require("http"); //用于发起请求 const fs = require("fs"); //用于检测、写入文件等其他文件操作 // "http://www.compassedu.hk/sitemap1.txt", // "http://www.compassedu.hk/sitemap2.txt", //重复的链接 var source = [ //Robots.txt显示的数据源 "http://m.compassedu.hk/sitemap3.txt", "http://m.compassedu.hk/sitemap4.txt", "http://m.compassedu.hk/sitemap6.txt", "http://m.compassedu.hk/sitemap7.txt", "http://m.compassedu.hk/sitemap8.txt" ] var s = 0; //控制源的序号 var arr = []; //合并的下载地址数组 var sou = []; //源下载地址数组 var i = 0; //当前下载地址数组序号 fs.exists(__dirname+"/compassedu", function(flag){ //下载路径检测 if(!flag) fs.mkdirSync(__dirname+"/compassedu"); //创建下载存放目录 }) fs.exists(__dirname+"/logs", function(flag){ //日志路径检测 if(!flag) fs.mkdirSync(__dirname+"/logs"); //创建日志存放目录 }) if(fs.existsSync(__dirname+"/logs/compassedu_backup")){ //是否存在断连恢复下载的控制文档 let obj = JSON.parse(fs.readFileSync(__dirname+"/logs/compassedu_backup")); //存在则读取上次下载的位置 i = obj.index; init(); //开始初始化程序 } else{ init(); //开始初始化程序 } function init(){ //初始化 http.get(source[s], function(res){ //获取源下载地址文件 //将源文件的内容存储到数组 let rawData = ""; res.setEncoding("utf8"); res.on("data", function(chunk){ //监听数据流 rawData += chunk; }); res.on("end", function(){ //监听结束 sou[s] = rawData.split("\n"); console.log("源", s+1, ": ", sou[s].length, "条数据"); s++; if(s<source.length){ //源文件还未读取完 init(); } else{ //源文件读取完毕 for(let m=0;m<sou.length;m++){ //将所有的地址数组合并 arr = arr.concat(sou[m]); } arr = [...new Set(arr)]; //去重 console.log("总计: ", arr.length, "条数据", "\n爬虫配置完毕!!\n开始爬取 "); start(); //开始爬取程序 } }); }) } function start(){ //开始 let url = arr[i]; console.log(url); //打印当前爬取的URL http.get(url,function(res){ //发起请求 let obj = { //将当前的信息存储到对象中 "time": new Date().toLocaleTimeString(), "index": i, "url": url, "status": res.statusCode }; fs.appendFileSync("./logs/download.log", JSON.stringify(obj), "utf8"); //写入日志文件 fs.writeFileSync("./logs/compassedu_backup", JSON.stringify({"index": i}), "utf8"); //将当前的下载URL序号写入断连恢复文件 //读取请求到的数据流 let rawData = ""; res.setEncoding("utf8"); res.on("data", function(chunk){ //监听数据流事件 rawData += chunk; }); res.on("end", function(){ //监听结束事件 $ = cheerio.load(rawData); //启用类jQuery插件 title = $(".container-public h1").text().replace(/\s/,"").trim(); //读取数据流部分的标题 body = $(".container-public").html(); //读取数据流部分的内容 body = body.split("visible-xs")[0]; //剥离多于的数据或其他处理,准备写入文件 i++; //序号+1 fs.writeFile(__dirname+"/compassedu/"+title+".html", body, "utf8", function(err){ //将处理好的数据写入文件 if(!err) console.log(title, "写入成功"); else{ console.log(err); } }); if(i>=arr.length) { //若序号达到数组的最后,结束程序 console.log("爬取结束"); fs.unlinkSync("./logs/compassedu_backup");//爬取结束,销毁断连恢复文件 return; } else { //否则递归运行 start(); } }); res.on("error", function(err){ //监听其他错误 console.log(err); }); }) }
至此,就结束了,是否有bug还不清楚,数据还没爬完呢~
有bug的话,我后续补充修复~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
常春岛资源网 Design By www.syssdc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
常春岛资源网 Design By www.syssdc.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2025年05月11日
2025年05月11日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]