本文将简单介绍下RPA技术及其一个简单应用,同时推荐一个开源仓库上的(可视化)rpa工具,不用写代码也可以实现所有重复性的自动签到。
一. 概念
RPA(Robotic Process Automation)是指在各行业中使用软件自动化来实现原本由人类操作的计算机完成的操作。它允许软件机器人自动处理大量重复的、基于规则的工作流程任务。
通过程序去操作一些具体的事情,比如:
- 打开浏览器,按顺序点击一些有标识性的按钮(一不小心就签到了呢~)
- 访问页面后爬取数据,截图,记录等等…
二. 推荐工具
1. 元气/my-rpa
- 链接:https://gitee.com/vitality-a/my-rpa
- 介绍:使用Python写的,主要依靠pyautogui进行操作,主程序支持7种命令。
- 优点:内置使用说明书,通过可视化的截图识别,在excel配置命令就行。如果没有特殊要求,就不需要写任何代码。直接通过控制台窗口运行python程序即可。
- 缺点:命令比较死板,虽然也可以输入内容(靠py复制粘贴),但是不能模拟按键操作,比如敲回车。(为此后面特意修改了一下)
2. 小瓶PRA
- 链接:https://gitee.com/pbottle/pbottle-rpa
- 相对完整的一个项目,也有自己的产品官网。
- 优点:可以定时执行+编写JS脚本,自定义程度高。可以支持的事情也相对多一些,比如模拟键盘操作。
- 缺点:不是可视化的。
三. 元气/my-rpa安装使用流程
-
下载my-rpa仓库到本地。
可以通过代码仓库下载,也可以下载我已经修改过的文件。
蓝奏云下载:https://wws.lanzouv.com/iZ40M0dcdfkj -
依照“使用说明书”配置Python环境
# python3.4以上版本
pip install pyperclip
pip install xlrd
pip install pyautogui==0.9.50
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pillow
- 配置成功后预先截图(签到的每一个步骤),放到文件根目录下的一个文件夹,可以删除原本的截图文件夹。这里以掘金签到并收集bug为例:
上图中的g-4-1及g-4-2是为了兼容截的按钮,实际上在没有签到的情况下,只会显示g4按钮。
- 创建或修改excel “cmd.xls”,此处展示我的excel指令。
指令类型(1 单击 2 双击 3 右键 4 输入 5 等待 6滚轮 7存在点击) | 内容(图片名称.png、输入内容、等待时长/秒) | 重复次数(-1代表一直重复)或存在点击持续时间(默认一秒) |
---|---|---|
2 | juejin/g1.png | |
4 | enter | |
1 | juejin/g2.png | |
4 | enter | |
5 | 4 | |
7 | juejin/g3.png | |
5 | 1 | |
7 | juejin/g4.png | |
5 | 3 | |
1 | juejin/g5.png | |
7 | juejin/g6.png | |
7 | juejin/g-6.png | |
1 | juejin/g7.png | |
1 | juejin/g-8.png | |
6 | -300 | |
7 | juejin/g9.png | |
6 | -200 | |
5 | 1 | |
7 | juejin/g-9.png | |
5 | 4 | |
7 | juejin/g9.png | |
1 | juejin/g10.png | |
7 | juejin/g11.png | 0.5 |
7 | juejin/g11.png | 0.5 |
7 | juejin/g11.png | 0.5 |
7 | juejin/g11.png | 0.5 |
7 | juejin/g11.png | 0.5 |
7 | juejin/g11.png | 0.5 |
7 | juejin/g11.png | 0.5 |
7 | juejin/g11.png | 0.5 |
7 | juejin/g11.png | 0.5 |
1 | juejin/g12.png |
- 改善源程序
原本的程序中的输入操作(指令4)相当于拷贝excel的内容栏到输入框,无法实现回车的功能,故我们可以稍加修改,从而让它支持回车。
在函数mainWork中通过数字条件判断从而进行不同的操作,在waterRPA.py文件中约140行位置,修改数字4的操作如下:
#4代表输入
elif cmdType.value == 4.0:
inputValue = sheet1.row(i)[1].value
if inputValue == 'enter':
pyautogui.press('enter') # 按下并松开(轻敲)回车键
else:
pyperclip.copy(inputValue)
pyautogui.hotkey('ctrl','v')
time.sleep(0.5)
print("输入:",inputValue)
这里简单地特判了一下如果内容是enter,则敲下回车,否则依旧通过复制粘贴输入excel的内容。
- 至此即可以查看对应的效果。通过模拟鼠标键盘操作,理论上可以实现任何一个PC端的重复工作(比如签到)
rpa-掘金签到