RPA 前端解决方案
前言
刚入职公司3个月的时间,领导让我负责前端 RPA
的一些需求,目前其他的同事也都是忙于业务需求,对这方面也没有项目经验(我也是没接触过),下面我们一起先了解下 RPA
的相关概念。
RPA
是什么
RPA (Robotic Process Automation,机器人流程自动化)是一类流程自动化软件工具,通过程序模拟人为操作进行数据采集以及流程自动化,解决繁琐低效的重复劳动,提高效率。
那么映射到我们在做的需求就是 前端爬虫
,通过消息队列的形式,每天不定时的在第三方网站(通过跨境卫士登录,里面拥有所有的店铺)执行相应步骤和流程的操作,从消息队列里取出对应的店铺和起始时间来模拟人的操作,下载到相应文件调用接口形式给到后端,来进行每个店铺销量数据统计和分析。
功能实现
按照上面功能分为两个模块
node模块
node 模块负责管理、调度爬虫任务,并负责通信任务,主要功能点如下:
- 与服务器通信,使用消息队列与服务器通信,接收任务。
- 与爬虫通信,根据不同实现,爬虫可能需要交换信息。
- 任务调度,管理任务的启动、取消、结束,是否能异步进行,以及保存任务结果。
- 错误处理,爬虫出错时的重试机制,以及对应的错误处理。
- 日志,收集执行时的各种日志,方便分析及 debug。
- CICD,因为跨境卫士只能运行在 windows 上边,所以服务器也只能选择 windows server,需要有对应的部署方案。

流程图如上,出于解耦的考虑,node 管理模块只负责通信和任务调度管理,不负责具体的任务功能。 为了便于扩展,node 管理模块支持多种。
爬虫任务
这块要做的主要是数据采集和自动化任务两个方向,都需要和浏览器打交道,有几种方案:
无头浏览器
使用 puppeteer
或 selenium
编写脚本完成任务,优势为性能高、灵活性好、开发速度快,可以并行进行任务;缺点为不支持跨境卫士,可能会触发网站的反爬机制。
模拟人工手动操作
使用模拟鼠标键盘、图像搜索定位等功能模仿真实用户操作,优势为适用范围广,支持跨境卫士及其他软件,被风控机率小;缺点为速度慢,运行时会占据系统,只能同步进行任务。
可参考:www.youtube.com/watch?v=MpI…
浏览器插件
通过插件的方式进行网页进行定位、模拟操作。优势为支持跨境卫士,缺点为开发、安装繁琐,环境不稳定,只能同步进行任务。
最终选型
本次 eBay traffic 数据采集任务依赖于跨境卫士,所以技术上会选择模拟人工手动操作的方式。附上开发文档链接
经过调研,单次自动化任务需要花费 7 - 10 分钟时间,主要花销在于等待 ebay 后台生成下载任务需要较长时间,且无法规避。考虑 ebay 店铺较多(133 个),整体执行时间过长,所以准备将单个爬虫任务拆分成两部分,第一部分先触发所有店铺的生成下载任务,第二部分进行文件下载,node 模块需要进行对应的任务调度,保证爬虫任务的执行顺序。

最后
上面也只是我们调研了几种的实现方案,目前我们也是踩坑中,后续也会把踩坑记录也记录下来分享给大家。大家有什么好的实现方式也可以在评论区留言!
转载自:https://juejin.cn/post/7162926493184557093