自动化工具实践操作-注入自定义代码

功能

采集掘金左边每个tab下文章的标题。人为操作就是点击一个tab,复制文字标题,重复以上操作。根据这个,我们可以转换成自己的代码

开始设计

如上文操作基本一致。新建任务、设计点击事件如出一辙。

自定义循环事件

操作循环节点,循环类型选择自定义事件。
在这里插入图片描述

注入以下代码:
逻辑:点击左边tab,点击第三次时就结束循环

/**** 【此处为函数体】* 参数: const { page, env, browser, ...other } = arg* 必须返回 Boolean 类型* */const { page, env, browser, ...other } = arg
env.tabIndex = env.tabIndex || 3
if (env.tabIndex > 4  ) return false
const xpath = `/html/body/div[1]/div[1]/div[@id="juejin"]/div[1]/main[1]/div[1]/div[1]/nav[1]/div[${env.tabIndex }]/div[1]/a[1]`
env.tabIndex = env.tabIndex + 1
const clickElement = await page.waitForXPath(xpath, { timeout: 0})
await clickElement.click()
await page.waitForTimeout(5 * 1000)
return true

自定义事件

实现采集标题自定义事件,如图:
在这里插入图片描述

代码如下:


/**** 【此处为函数体】* 参数: const { page, env, browser, ...other } = arg* 返回一个对象 【可修改page,下次操作参数会在arg中】* */
const { page, env, browser, ...other } = argconst xpath1 = '/html/body/div[1]/div[1]/div[@id="juejin"]/div[1]/main[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/li[1]/div[1]/div[1]/div[1]/div[1]/a[1]'
const xpath2 = '/html/body/div[1]/div[1]/div[@id="juejin"]/div[1]/main[1]/div[1]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/li[1]/div[1]/div[1]/div[1]/div[1]/a[1]'
let  clickElement =  null
try {console.log('xpath1')clickElement = await page.waitForXPath(xpath1, { timeout: 50000})
} catch (error) {console.log('xpath2')clickElement = await page.waitForXPath(xpath2, { timeout: 50000})
}if (!clickElement) return {}
const text = await page.evaluate(node => { return node['innerText'] }, clickElement)console.log(`正在自定义采集:${text}`)
env && (typeof env.pickData === 'function') && env.pickData({rename: '标题',value: text,
})return {}

最后

注入代码需要一定代码基础,欢迎折腾,开发文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/635836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言【cli】——ansi_has_any():检查字符串里是否存在ANSI格式

Package cli version 3.6.0 Usage ansi_has_any(string, sgr TRUE, csi TRUE, link TRUE) Arguments 参数【string】:要检查的字符串。它也可以是字符向量 参数【sgr】:是否查找SGR(样式化)控制序列。 参数【csi】:是否查找非sgr控制序…

ubuntu下常见查看库信息的指令

要查看共享库(例如 liblog4cplus.so)的信息,可以使用一些工具来获取有关库的详细信息。以下是一些常用的方法: 1. 使用 nm 命令: nm 命令用于显示目标文件或共享库的符号表。你可以运行以下命令查看 liblog4cplus.so…

Mysql:重点且常用的操作和理论知识整理 ^_^

目录 1 基础的命令操作 2 DDL 数据库定义语言 2.1 数据库操作 2.2 数据表操作 2.2.1 创建数据表 2.2.2 修改和删除数据表 2.2.3 添加外键 3 DML 数据库操作语言 3.1 插入语句(INSERT) 3.2 修改语句(UPDATE) 3.3 删除语句 3.3.1 DELETE命令 3.3.2 TRUNCATE命令 4 …

第1周:Day 3 - PyTorch与TensorFlow的异同介绍(入门级)

第1周:Day 3 - PyTorch介绍 学习目标 理解PyTorch的基本概念和主要特点。 成功安装PyTorch环境。 PyTorch简介 PyTorch 是一个开源的机器学习库,广泛用于计算机视觉和自然语言处理等领域。 它由Facebook的人工智能研究团队开发,提供了丰富的A…

idea中使用git提交代码报 Nothing To commit No changes detected

问题描述 在idea中右键,开始将变更的代码进行提交的时候,【Commit Directory】点击提交的时候 报 Nothing To commit No changes detected解决方案 在这里点击Test 看看是不是能下面显示git版本,不行的话 会显示一个 fix的字样,行…

【日常聊聊】边缘计算的挑战和机遇

🍎个人博客:个人主页 🏆个人专栏: 日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 边缘计算的挑战和机遇 一:数据安全与隐私保护 二:网络稳定性与可靠性 三:实时性与性能优…

Unity中的协程

定义:协程使得任务的执行可以分配到多个帧中完成,在Unity中,协程从开始执行到第一个yield return 语句后将调用权归还Unity主线程,并在紧随的下一帧继续从上次结束调用的代码上下文位置恢复执行。 常见应用场景:HTTP请…

【Vue】属性计算 computed

<script setup>import { ref,computed} from vue let hbs ref([]); //装爱好的值const publishHbsMessagecomputed(()>{return hbs.value.length>0?Yes:No}) </script><template><div>吃 <input type"checkbox" name"hbs&qu…

C++入门学习(八)sizeof关键字

sizeof 是 C 和 C 中的一个运算符&#xff0c;用于确定特定类型或对象的内存大小&#xff08;以字节为单位&#xff09;。 1、查看数据类型占据内存大小 #include <iostream> using namespace std; int main() {short a 1;int b 1;long c 1;long long d 1;cout<…

Ubuntu使用docker-compose安装chatGPT

ubuntu环境搭建专栏&#x1f517;点击跳转 Ubuntu系统环境搭建&#xff08;十五&#xff09;——使用docker-compose安装chatGPT Welcome to the AI era! 使用docker compose安装 在/usr/local文件夹下创建chatgpt mkdir chatgpt创建docker-compose.yaml vim docker-compos…

代码随想录算法训练营Day32|122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II

目录 122.买卖股票的最佳时机 II 前言 思路 算法实现 55. 跳跃游戏 思路 算法实现 45.跳跃游戏 II 前言 思路 算法实现 总结 122.买卖股票的最佳时机 II 题目链接 文章链接 前言 本题要求只能持有一支股票&#xff0c;根据每日股票的价格控制股票的买入和卖出获取最…

6. UE5 RPG AttributeSet的设置

AttributeSet 负责定义和持有属性并且管理属性的变化。开发者可以子类化UAttributeSet。在OwnerActor的构造方法中创建的AttributeSet将会自动注册到ASC。这一步必须在C中完成。 Attributes 是由 FGameplayAttributeData定义的浮点值。 Attributes能够表达从角色的生命值到角色…

文件扫码下载的方法?轻松制作文件活码的技巧

现在多文件生成二维码的需求不断的增多&#xff0c;为什么大家都开始选择这种方式来展示文件呢&#xff1f;一方面是将文件储存在云端&#xff0c;避免有时间限制的问题&#xff0c;随时查看文件&#xff1b;二是可以让其他人同时扫描二维码查看内容&#xff0c;当需要分享给很…

Vue四个阶段,八个钩子函数

- 创造阶段&#xff1a;创建Vue实例和初始化数据事件&#xff0c;数据代理&#xff0c;监测watch - beforeCreate&#xff0c;只是创建实例&#xff0c;不能this.$el,this.msg,this.方法名&#xff08;&#xff09; - created&#xff0c;数据代理了&#xff0c;能v…

内网部署,移动端如何使用,且保障电脑端安全

A. 在企业内网自建DNS服务&#xff0c;然后使用域名代替公网IP重新配置&#xff1b; B. 在互联网区域&#xff0c;使用互联网DNS服务将域名解析到公网IP&#xff1b; C. 在内网区域&#xff0c;使用自建DNS服务将域名解析到服务器内网IP&#xff0c;这样内网电脑不能联网也能正…

【ChatGPT】利用ChatGPT将图片转换成JSON文件

前言 我在创建自己的GPT时,通常会上传一些JSON文件作为知识库,我还制作了一些脚本工具,将PDF文件转换成JSON文件。但是在这个过程中产生一个问题,PDF文件中会有一些图表,JSON文件就不能存储和表达这些图表的内容了。那该怎么办呢?这里跟大家介绍一个方法,可以有效地将图…

孚盟云 多处SQL注入漏洞复现

0x01 产品简介 上海孚盟软件有限公司是一家外贸SaaS服务提供商,也是专业的外贸行业解决方案专业提供商。 全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化服务,使中…

端口映射的定义、特点、场景、实例、常见问题回答(Port Mapping)

目 录 一、端口映射&#xff08;Port Mapping&#xff09; 二、端口映射应用场景&#xff08;什么时候用到端口映射&#xff09; &#xff08;一&#xff09;、使用端口映射的条件 &#xff08;二&#xff09;使用端口映射的具体场景 三、端口映射技术的特点 …

如何将PDF文件转换为Word格式?推荐PDF转换工具

pdf转word格式可以帮助我们对文档的格式进行调整和排版&#xff0c;有时候&#xff0c;pdd文件的排版可能不符合我们的需求&#xff0c;或者需要进行一些样式和布局的调整。通过将PDF转word&#xff0c;我们可以轻松地修改字体、样式、段落间距等&#xff0c;使文档符合我们的要…

数学建模常见算法的通俗理解(1)

目录 1.层次分析法&#xff08;结合某些属性及个人倾向&#xff0c;做出某种决定&#xff09; 1.1 粗浅理解 1.2 算法过程 1.2.1 构造判断矩阵 1.2.2 计算权重向量 1.2.3 计算最大特征根 1.2.4 计算C.I.值 1.2.5 求解C.R.值 1.2.6 判断一致性 1.2.7 计算总得分 2 神经…