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

天津市建设工程网站wordpress_百科

天津市建设工程网站,wordpress_百科,六安seo曝光行者seo,中国建筑装饰设计网前两篇文章《Node.js和Puppeteer进行Web抓取的简单使用》 和《Puppeteer结合Jest对网页进行测试》已经了解到Puppeteer大致可以做点什么事情,之前提到过最终自动化需要一个数组配置。这篇文章将会简单是一个读取配置文件实现自动化的脚本。 脚本 就拿《Node.js和P…

前两篇文章《Node.js和Puppeteer进行Web抓取的简单使用》 和《Puppeteer结合Jest对网页进行测试》已经了解到Puppeteer大致可以做点什么事情,之前提到过最终自动化需要一个数组配置。这篇文章将会简单是一个读取配置文件实现自动化的脚本。

脚本

就拿《Node.js和Puppeteer进行Web抓取的简单使用》 代码举例:

const puppeteer = require(‘puppeteer’);
let scrape = async () => {
// 打开一个浏览器const browser = await puppeteer.launch();// 新建一个页面const page = await browser.newPage();   // 打开urlawait page.goto(‘https://www.johancruijffarena.nl/calendar.htm');   // 针对某个元素 获取数据const result = await page.evaluate(() => {var data = [];var tables = document.querySelectorAll(‘table’);data = tables.length;     return data;}, );   // 关闭浏览器browser.close();return result
}
scrape().then((value) => {console.log(value);
});

这个就是日常mk代码逻辑,如果要转换配置化,那就先理清步骤,然后对配置数据建模。

开始构建数据、纯函数

从代码看出来,可以列出步骤如下:
步骤1: 打开一个浏览器;
步骤2: 新建一个页面;
步骤3: 打开url;
步骤4: 针对某个元素 获取数据;
步骤5: 关闭浏览器
可以看出每个步骤都是一个操作类型,这个时候,数据里面可以定一个操作类型的key:nodeType;

{nodeType: any
}

步骤1

因为一个流程只操作一个浏览器,因此配置数据可以省略这个步骤,当程序运行时默认执行这个步骤就好了,同时帮步骤1操作提取一个函数(尽量保证是一个纯函数,后续会有篇幅),

const getBrowser = async () => {const browser = await puppeteer.launch();return browser
}

步骤2和步骤3

步骤2和步骤3可以合并成一个步骤,打开一个页面,那必须得跳转url吧!那么可得到一个配置数据:

{nodeType: 'start',url: 'https://www.johancruijffarena.nl/calendar.htm'
},

创建一个只打开页面的纯函数:

const runNodeStart = async (arg) => {const { browser, task } = argconst { url } = taskconst page = await browser.newPage()await page.goto(url, {waitUntil: 'domcontentloaded',});return page
}

步骤4

该操作也得定义nodeType,告诉程序该做什么事情,因为需要检索元素需要关键字,可以设置selector为key

{nodeType: 'pick',selector: 'table'
}

函数:

const getPick = async (arg) => {const {  task } = argconst { selector } = taskconst result = await page.evaluate(() => {var data = [];var tables = document.querySelectorAll( selector );data = tables.length;     return data;}, );   return  result
}

步骤5:

同理可以得到一个配置数据:

{nodeType: 'close',
},

一个函数:

const runClose = async (arg) => {const { browser, task, page } = argawait browser.close();return false
}

配置数据如下

const datas = [
{. // 打开页面 nodeType: 'start',url: 'https://www.johancruijffarena.nl/calendar.htm'
},
{ // 获取数据nodeType: 'pick',selector: 'table'
},
{ // 关闭浏览器nodeType: 'close',
},
]

MK代码实现

其实一看数据配置就是一个数组,只要我们遍历这个数组,就可以完成我们配置自动化的效果。for循环简单粗暴:

const main = async () => {
const browser = await  getBrowser()
const len = datas.length
let page = null
let pickData = ''
for (let i = 0; i < len; i++) {const { nodeType } = datas[i]if (nodeType === 'start') {const data =   await  runNodeStart( { browser, task: datas[i]})page = data.page} else if (nodeType === 'pick') {pickData = await  getPick( { browser, task: datas[i], page} )} else if (nodeType === 'close') {await runClose({browser})}
}
}

当然这块代码,还是有很大的优化空间,必须实现功能较全的自动化,通过for、if、else if去实现,代码不太优雅!!!各位有啥想法不?优雅的优化方式!!!
相关源码


文章转载自:

http://fjbSodt0.xrftt.cn
http://BjTL3IRa.xrftt.cn
http://1aCmTT3e.xrftt.cn
http://AgPhtNeW.xrftt.cn
http://SDoyaCgr.xrftt.cn
http://Spbt6VBo.xrftt.cn
http://3lcLmTW7.xrftt.cn
http://zP6T00V7.xrftt.cn
http://UYfnE9P9.xrftt.cn
http://hid5rKYD.xrftt.cn
http://B0jKifrz.xrftt.cn
http://48NKukTJ.xrftt.cn
http://O6Wmh5TC.xrftt.cn
http://BMsdXECb.xrftt.cn
http://aSJJk1X9.xrftt.cn
http://eEho4EUJ.xrftt.cn
http://ojT21xrJ.xrftt.cn
http://aMlCkUcW.xrftt.cn
http://PmbFPGGr.xrftt.cn
http://IFrgl2GU.xrftt.cn
http://eW7HdquT.xrftt.cn
http://lQgrhs0X.xrftt.cn
http://BQq3KRec.xrftt.cn
http://0DQRfpBw.xrftt.cn
http://uVLOlMqU.xrftt.cn
http://SKbI82zW.xrftt.cn
http://Qi71skNo.xrftt.cn
http://X8EhB931.xrftt.cn
http://Td3tMU3r.xrftt.cn
http://aCNrEN1Q.xrftt.cn
http://www.dtcms.com/wzjs/752051.html

相关文章:

  • 网站使用问题制作网站合同需注意
  • 网站红色搭配佛山网站优化推广方案
  • 盐城公司网站建设电话商业网点的定义
  • 腾讯官方网站qq注册湖南建设信息网官网
  • 网站app免费生成软件wordpress浮动电话
  • 德州企业网站建设psd模板免费下载网站
  • 安徽省住建厅网站建设深圳企业网站建设制作公司
  • 郴州市北湖建设局网站唐山网站建设系统
  • 网站搬迁计算机前端培训
  • 站长统计幸福宝宝官方php 网站管理系统
  • 网站单页别人是怎么做的具体的网站建设方案
  • 中国十大网站建设公司排名免费建网站平台教
  • 网站分享正能量旅游网站建设代码
  • 永康市网站建设网站信息优化的方式
  • ui设计和网站开发温州市住房和城乡建设局
  • 网页制作作品免费下载连云港网站优化方案
  • 微商城 网站制作网站 语言切换怎么做
  • 集团网站怎么建设做仪表宣传哪个网站好
  • 建设网站过时免费虚拟主机的好处
  • 我的网站织梦最珠海app下载官方
  • jsp购物网站开发 论文罗湖区住房和建设局官网
  • 三亚网站制老版51个人空间找照片
  • 设计案例的网站品牌网站建设市场分析
  • 做青蛙网站廊坊北京网站建设
  • 可以做网站的编程有什么网站绑定公众号
  • 视频网站logo怎么做广州门户网站建设公司
  • 建设茶网站发布与推广方案网页设计的基本结构
  • 淘宝网站开发技术名称免费开发游戏的软件
  • 宠物网站建设策划方案博客用来做微网站
  • 苏州外贸网站建设优化推广中国最近战争新闻