目录
一、项目简介
二、项目结构
三、项目特点和核心代码
项目特点
核心代码模块
1. 主程序入口(main.py)
2. 数据获取模块(get_data.py)
3. 流程配置模块(process5.py)
四、适用场景
五、常见问题与建议
常见问题
建议
六、源码下载
七、后续扩展方向
本项目是一个基于影刀RPA(ShadowBot)开发的自动化流程项目,主要用于数据获取与处理的自动化任务。项目通过模块化设计实现了数据采集、处理和流程控制等功能,支持通过可视化流程设计器(.flow.json文件)定义和管理自动化步骤,适用于需要定期执行重复数据操作的业务场景。
项目采用标准影刀RPA项目结构,主要包含以下目录和文件:
xbot_robot/
├── .dev/ # 开发环境相关文件
│ ├── *.flow.json # 影刀流程设计文件
│ ├── *.pdb # 流程调试信息文件
│ ├── icon/ # 应用图标资源
│ └── screenshot/ # 流程截图
├── resources/ # 项目资源文件
│ └── images/ # 图片资源
├── __pycache__/ # Python编译缓存
├── main.py # 项目入口文件
├── get_data.py # 数据获取模块
├── process5-14.py # 流程处理模块
├── selectors.xml # UI元素选择器配置
├── package.json # 项目依赖配置
└── settings.json # 项目设置
主要文件说明:
.flow.json
文件:影刀RPA可视化流程设计文件main.py
:项目主程序入口get_data.py
:数据获取功能实现process*.py
:各流程步骤的实现代码selectors.xml
:UI元素定位选择器配置import xbot
import xbot_visual
from . import package
from .package import variables as glv
import time
def main(args):
try:
# 调用流程5并获取抓取数量
process_result = xbot_visual.process.run(process="process5", package=__name__, inputs={
}, outputs=[
"抓取数量",
], _block=("main", 1, "调用流程"))
# 使用抓取数量作为输入调用流程14
_ = xbot_visual.process.run(process="process14", package=__name__, inputs={
"pages": lambda: process_result.抓取数量,
}, outputs=[
], _block=("main", 2, "调用流程"))
finally:
pass
class GetComment:
def __init__(self, itemId, pages):
self.itemId = itemId
self.pages = pages
def get_cookie(self):
# 获取当前浏览器cookie
web_page = web.get_active(mode='chrome')
cookies = web_page.get_cookies()
cookie_dict = {}
for cookie in cookies:
name = cookie['name']
value = cookie['value']
cookie_dict[name] = value
return cookie_dict
def get_params(self):
# 生成请求参数
datum = self.get_data()
for data in datum:
timestamp = utlis.get_timestamp()
token = self.get_token()
sign = utlis.get_result(token, timestamp, data)
params = {
'jsv': '2.7.2',
'appKey': '12574478',
't': timestamp,
'sign': sign,
'api': 'mtop.alibaba.review.list.for.new.pc.detail',
'v': '1.0',
'data': data,
}
yield params
def exe_request(self):
# 执行API请求并处理响应
_params = self.get_params()
_cookies = self.get_cookie()
data_list = []
for params in _params:
response = requests.get('https://h5api.m.tmall.com/h5/mtop.alibaba.review.list.for.new.pc.detail/1.0/',
params=params,
cookies=_cookies)
text = response.text
# 正则提取JSON数据
pattern = re.compile(r'({.*})', re.DOTALL)
match = pattern.search(response.text)
text = json.loads(match.group(1))
items = text['data']['module']
# 处理返回数据...
import xbot
import xbot_visual
from . import package
from .package import variables as glv
import time
def main(args):
抓取数量 = 5
try:
# 显示自定义对话框获取用户输入
dialog_result = xbot_visual.dialog.show_custom_dialog(settings="{\"editors\":[{\"type\":\"Label\",\"value\":\"运行前,请自行【登录淘宝】\"},{\"type\":\"TextBox\",\"label\":\"抓取数量(页)\",\"VariableName\":\"pages\",\"value\":\"5\"}]}",
storage_key="d93bdd09-1b09-4980-8b8a-60be387bad1c",
_block=("配置信息", 1, "打开自定义对话框"))
# 检查用户是否点击确定按钮
if xbot_visual.workflow.test(operand1=dialog_result.pressed_button, operator="!=", operand2="确定", _block=("配置信息", 2, "IF 条件")):
exit(0)
# 设置抓取数量
if xbot_visual.workflow.test(operand1=dialog_result.pages, operator="empty value", operand2="", _block=("配置信息", 5, "IF 条件")):
抓取数量 = xbot_visual.programing.variable(value=lambda: 5, _block=("配置信息", 6, "设置变量"))
else:
抓取数量 = xbot_visual.programing.variable(value=lambda: int(dialog_result.pages), _block=("配置信息", 8, "设置变量"))
finally:
args["抓取数量"] = 抓取数量