当前位置: 首页 > news >正文

老司机开车记

node.js+jsdom 小爬虫 并不是框架>.<

解决某些个人问题:

利用了dfs搜索


"use strict";
let https=require('https');
let fs=require('fs');
let path=require('path');
let jsdom=require('jsdom');
let visted=[];function isDir(url){if(url.indexOf('.')!==-1){return false;}try{fs.mkdirSync(url);console.log('mkdir:'+url);}catch(e){console.log(`IOerror:${e}`)}return true;
}function isUrlVisited(url){for(let i=0;i<visted.length;i++){if(visted[i]===url){return true;}}visted.push(url);return false;
}function writeFile(url){if(isDir(url)&&isUrlVisited(url)){return;}let filePath=path.parse(url);try{urltoFile(url);}catch(error){console.log(error)}}function urltoFile(url){https.request(root+url,(res)=>{res.on('data',(data)=>{fs.appendFileSync(url,data);});}).on('error',(e)=>{console.log(e);}).end();
}function dealUrl(url){isUrlVisited(url);isDir(url);writeFile(url);}
let root='https://www.seryox.com';
function applyUrl(url){jsdom.env({url: url,scripts: ["http://code.jquery.com/jquery.js"],done: function (err, window) {let $=window.$;console.log('done');try{let arr=$('a');console.log(arr.length)for(let i=0;i<arr.length;i++){let href=$(arr[i]).attr('href');if(href.match(/^\/pic/)&&!isUrlVisited(href)){console.log(href);if(isDir(href)){console.log('dir:'+url+href);applyUrl(root+href);}else{console.log('file:'+url+href);writeFile(href);}}}}catch(e){console.log(e+'@'+url);}}});
}
applyUrl(root+'/');

生成的文件夹编码为UTF-8 URL编码

利用此文件可解决

"use strict";
let fs=require('fs');
let root='/pic';function isDir(url){if(url.indexOf('.')!==-1){return false;}return true;
}function rename(path,name){if(name.indexOf('%')!==-1)console.log(path+'/'+name+' to '+path+'/'+decodeURI(name))fs.renameSync(path+'/'+name,path+'/'+decodeURI(name));
}function main(path){let fd=fs.readdirSync(path);for(let i=0;i<fd.length;i++){if(isDir(fd[i])){main(path+'/'+fd[i]);}rename(path,fd[i]);}
}
main(root);



http://www.taodudu.cc/news/show-6310417.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 一个人开车
  • 用d开车
  • 开车仪式
  • 老司机要开车啦!
  • 开车,开车!!!
  • 你为什么喜欢开车?
  • dmesg介绍
  • Linux--常用命令--dmesg
  • dmesg命令手册
  • dmesg 命令详解
  • linux dmesg命令参数及用法详解
  • linux命令之-dmesg详解
  • dmesg命令用法
  • Linux 系统设置 : dmesg 命令详解
  • dmesg七种用法
  • Linux命令:dmesg
  • dmesg的详细用法
  • linux命令--dmesg
  • 图解Linux命令之--dmesg命令
  • 2023年JAVA JDK8的安装与配置(附JAVA8安装包)
  • java-jdk下载及安装
  • Java软件包安装
  • java程序打包一体化:代码-jar-exe-安装包(图文详解、资源提供)
  • 把java项目打包成安装包,在windows下安装
  • java中jdk的下载与安装
  • 把java项目打包成安装包
  • java安装教程(解决官网下载的安装包为什么没有jre?)
  • 阿里云ACP ACE认证考试重要事项
  • 树莓派呼吸灯python代码
  • pyboard呼吸灯代码分享