临沂外贸国际网站建设,网页制作视频教程哪个网址好,江苏省建设厅网站培训网,企业网站怎么做seo最近接触了一个个人感觉很奈斯的项目#xff0c;故记录思路如下#xff1a;
puppeteer项目梳理#xff1a; 入口文件 run.js 入口命令 node run.js YourConfig.json 1、我们可以在自己的config.json里面设置好 ①、登录的用户名密码;aws或其它服务器的access等id,accessKey…最近接触了一个个人感觉很奈斯的项目故记录思路如下
puppeteer项目梳理 入口文件 run.js 入口命令 node run.js YourConfig.json 1、我们可以在自己的config.json里面设置好 ①、登录的用户名密码;aws或其它服务器的access等id,accessKey, region等信息; cookie的路径要上传到s3或者oss等对象存储平台的文件的路径 oss和s3的比较 ②、要运行的命令放在一个modules{}里面proxy的设置headlesstrue等访问浏览器的设置。
2、爬虫最好是运用模块化思想把重复用的功能单独的拎出来 在run.js里面我们可以import我们自己其他的js文件。 ①首先是import {LoadConfig} from config.js 这个LoadConfig主要是存储从config.解析的变量。 const argv process.argv.slice(2); const configPath argv[0]; const config JSON.parse(fs.readFileSync(configPath));
这是关于node的process相关内容的参考文章
类似这种把config.json的信息都解析到数组argv里面然后按照不同key设置不同键值对最后以export LoadConfig导出。 通过这种方式我们就看把config.json里面的配置按照键值对保存了LoadConfig的数组里面。
②关于s3的配置方法封装到S3Init.js文件中里面包含了s3的读写文件名判断文件存在读写文件流等function。 再引入一个包含save 和skip文件的storage.js方法主要功能是如果s3已经存在了同名文件在则判断跳过避免爬取重复文件。 再映入一个date.js主要是封装了判断日期更改日期名字获取当前日期等功能。
③关键引入import { createPage, closePage } from “./yourpath/Parsebrowser.js”; 这是主要的启动方法通过const page await createPage(getCookie, config.headless, config.proxy);去进行爬取 Parsebrowser.js里面可以设置具体的chrome.exe位置,主要是为了打开浏览器。
④最关键的一步 import { LoadConfig } from “./yourpath/config.js”; const config LoadConfig(); 再打开到浏览器之后在try下去引入config.modules。因为config.modules里面是不同的js文件每个js文件代表这一个页面的下载逻辑 并且以{export download} 形式返回。 我们调用const page await createPage(getCookie, config.headless, config.proxy),可以通过不同cookies访问网站; 再调用download变量方法就可以进去爬取不同页面因为不同页面暴露的都是同一个download方法可以通过循环依次爬取。 同时在同一个网站里我们可以设置复用的download.js去点击下载按钮可以设置复用的selectdate.js去选择日期等。
总结 将关于s3的配置打开浏览器访问不同页面都分别独立出来。并且通过config.json去定义想要运行的js文件所有爬虫js返回一个相同的变量当运行到入口文件run.js时for循环会将config.json的Modules定义的js爬虫文件一 一运行下去。 极大提高了代码复用效率以及通过json配置控制爬取页面的灵活性。
细节 在爬取元素有些插件的元素在页面element找不到可能在js里面。比如日期控件picker 的ant-select-dropdown-menu类就写在了js里面动态加载进去。