一、项目简介
本项目是一个基于实在智能RPA技术的亚马逊商品排名获取工具,旨在通过自动化流程从亚马逊网站采集商品排名数据。该工具支持用户自定义关键词、目标站点URL和采集页数,能够批量读取Excel中的关键词并进行多页数据采集,最终将结果整理输出。项目采用模块化设计,结合了网页自动化、数据处理和异常处理等功能,适用于电商卖家、市场调研人员等需要监控商品排名的用户。
二、项目结构
/
├── .sz/
│ └── breakpoint.json
├── conf/
│ └── 亚马逊流程配置.xlsx
├── config.json
├── customConfig/
│ └── 请填写流程信息/
├── extensions/
├── log/
├── main.sz
├── projects/
│ ├── child_modules/
│ ├── flow.py
│ ├── flow_modules/
│ │ └── FPaVM.py
│ ├── global_data.py
│ ├── gpt_modules/
│ ├── requirements.txt
│ └── rpaRoot.py
├── res/
三、项目特点和核心代码
1. 流程控制模块
项目采用模块化的流程控制设计,通过队列管理任务执行顺序,实现了灵活的流程跳转和错误处理机制。
# projects/flow.py
FLOW_QUEUE = []
# 亚马逊-商品排名获取
def flow_node_FPaVM():
sz_count = 0
overReTry = False
while True:
try:
run_module({ "module_path": "flow_modules.FPaVM" }, "main", SZEnv['rpa'], _sz_process_expr_="")
break
except Exception as e:
_e = e
sz_count += 1
if sz_count > 0:
overReTry = True
_error = SZEnv['rpa'].handling_error_info(e)
break
if overReTry:
raise _e
else:
FLOW_QUEUE.append("flow_node_w9G3u")
# 启动流程
def main(rpa):
flow_node_hsxAW()
while len(FLOW_QUEUE) > 0:
flowName = FLOW_QUEUE.pop(0)
eval(flowName + "()")
2. 全局变量与配置管理
项目通过global_data.py统一管理全局变量、配置参数和元素定位信息,实现了配置的集中化和模块化引用。
# projects/global_data.py
globalConfig = {"客户名称":"","is_online":0,"项目ID":"","批次ID":"","日志生效标志":"否","日期循环标志":"否","开始日期":"","结束日期":"","时间类型":"日","操作平台":["亚马逊"],"项目文件路径":"","机器人名称":"RPA机器人编码001","短信队列":"","流程类型":"功能操作","日志固定表头":"["店铺","账号","最后运行结果"]"}
outputConfig = {}
抛出异常信息 = None
任务块参数 = {}
任务配置参数 = {}
任务执行参数 = {}
任务上下文 = {}
模式列表 = []
网页对象 = None
globalVar = { "globalConfig": globalConfig,"outputConfig": outputConfig,"抛出异常信息": 抛出异常信息,"任务块参数": 任务块参数,"任务配置参数": 任务配置参数,"任务执行参数": 任务执行参数,"任务上下文": 任务上下文,"模式列表": 模式列表,"网页对象": 网页对象 }
# 元素定位配置加载
def get_element_path(pathname):
current_file_path = __file__
two_levels_up_path = os.path.dirname(os.path.dirname(current_file_path))
id_path = os.path.basename(two_levels_up_path)
element_path = os.path.join(two_levels_up_path, pathname)
element_map = {}
try:
with open(element_path, encoding='utf-8') as file:
if pathname == "elements.json":
element_data = json.load(file)
element_map = element_data.get("elementMap", {})
elif pathname == "globalVariable":
element_data = json.load(file)
element_map = json.loads(
find_element_dict(element_data).get("defaultValue", "{}")
)
prefix = f"projects\dependency_modules\{id_path}"
except:
pass
if "dependency_modules" in current_file_path:
recursive_update_dict(element_map, ["resDirPath", "filePath"], prefix)
return filter_element_map(element_map)
3. 亚马逊商品排名采集逻辑
FPaVM.py实现了核心的商品排名采集功能,包括用户参数交互、文件校验、Excel读取和网页数据采集等流程。
# projects/flow_modules/FPaVM.py
def main(rpa, **kw):
# 读取用户自定义参数
自定义对话框结果,关键词文件,站点URL,采集页数 = Dialog.GetConfigV4(SZEnv['rpa'], "请填写流程信息", [
{"name":"关键词文件","label":"请选择搜索关键词文件","tips":"请选择excel文件,将关键词填入A列中,支持多个关键词","fileOrFolder":"openFile","value":"","isRequired":"1","type":"File","number":1,"id":"NS5Gn"},
{"name":"站点URL","label":"请输入需要采集数据的亚马逊站点网址","tips":"请输入需要采集数据的亚马逊站点网址","value":"https://www.amazon.com/","isRequired":"1","type":"TextBox","number":2,"id":"iN703"},
{"name":"采集页数","label":"请输入需要采集商品的页数","tips":"请输入需要采集商品的页数","fileOrFolder":"openFile","value":1,"isRequired":"1","type":"File","number":3,"id":"4I0Cr"},
{"type":"runBy","value":2},
{"type":"ExeMode","value":"1"}], "KQ0p5", 0, 3, 0, var_ret=0, delay_before_new=0, delay_after_new=0, exc_retry=0, retry_count=1, retry_interval=1, skip_err=0, log_exc=1, var_names=["自定义对话框结果","关键词文件","站点URL","采集页数"], _position=("FPaVM","zUPII","亚马逊-商品排名获取","自定义对话框","3","Dialog.GetConfigV4"))
# 参数校验
if (not 自定义对话框结果["confirm"]):
sys.exit()
try:
if not File.FileExists(SZEnv['rpa'], 关键词文件):
raise Exception("文件不存在,请选择正确的关键词文件")
匹配结果 = Regex.TestNew(SZEnv['rpa'], 站点URL, 6, "w{3}\..*?\..*?")
if (not 匹配结果):
raise Exception("亚马逊站点有误,请检查亚马逊站点网址")
匹配结果 = Regex.TestNew(SZEnv['rpa'], 采集页数, 6, "\d+")
if (not 匹配结果):
raise Exception("采集业务有误,请检查采集页数")
except Exception as ex:
异常对象 = SZEnv['rpa'].format_ex(ex)
Log.Error(SZEnv['rpa'], str(异常对象))
raise
# 读取Excel关键词
Excel文件 = Excel.Cs_OpenV3(SZEnv['rpa'], 关键词文件, 1, "默认", 1, 1, "", "", 0, 0)
sheet列表 = Excel.Cs_GetName(SZEnv['rpa'], Excel文件, "全部")
# 遍历关键词并采集数据
for 循环位置,sheet in enumerate(get_list(sheet列表,0, 1,-1)):
if (sheet == "排名信息"):
continue
# 省略具体采集逻辑...
Dialog.Notice(SZEnv['rpa'], "开始采集亚马逊商品排名", "提醒", 2000)
四、适用场景
- 电商卖家商品监控:定期采集特定关键词下自家商品的排名变化,掌握市场竞争态势
- 竞品分析:监控竞争对手商品在不同关键词下的排名情况,分析竞品优势
- 市场调研:批量采集特定品类商品的排名数据,进行市场趋势分析
- 关键词研究:分析不同关键词的商品竞争程度和排名难度
- 销售策略优化:根据排名数据调整商品定价、标题优化和广告投放策略
- 多站点数据对比:支持不同亚马逊站点(如美国、欧洲、日本等)的排名数据采集与对比
- 批量数据报告生成:自动生成Excel格式的排名报告,便于数据存档和进一步分析
五、常见问题与建议
常见问题
-
文件不存在错误:
- 问题:提示"文件不存在,请选择正确的关键词文件"
- 解决:确保选择的Excel关键词文件存在且路径正确,文件格式为.xlsx
-
亚马逊站点URL错误:
- 问题:提示"亚马逊站点有误,请检查亚马逊站点网址"
- 解决:确保输入的URL格式正确,如"https://www.amazon.com/"或对应国家站点
-
采集页数参数错误:
- 问题:提示"采集业务有误,请检查采集页数"
– 解决:确保采集页数为纯数字,如"5"表示采集5页数据
- 问题:提示"采集业务有误,请检查采集页数"
-
Excel读取失败:
- 问题:无法正确读取关键词Excel文件
- 解决:确保Excel文件未被占用,关键词填写在A列,且Sheet名称不为"排名信息"
-
网页加载超时:
- 问题:亚马逊网页加载缓慢或超时
- 解决:检查网络连接,考虑增加延迟设置或分时段采集
建议
- Excel文件规范:建议将关键词单独放在一个Excel文件中,每个Sheet可对应不同品类的关键词
- 关键词管理:避免一次性采集过多关键词,建议分批进行以提高稳定性
- 网络环境:在网络稳定的环境下运行,避免因网络波动导致采集中断
- 反爬策略:适当调整采集间隔,避免过快请求导致IP被限制
- 结果备份:定期备份采集结果,防止数据丢失
- 版本更新:关注工具版本更新,及时获取新功能和bug修复
六、源码下载
- 应用市场:可通过实在智能RPA应用市场搜索"亚马逊-商品排名获取"下载安装
- 私聊
七、后续扩展方向
- 多线程采集:引入多线程机制,提高多个关键词并行采集效率
- 定时任务功能:增加定时自动采集功能,支持按日/周/月定期执行
- 数据可视化:添加排名趋势图表展示功能,直观呈现排名变化
- 多平台支持:扩展支持其他电商平台(如eBay、速卖通等)的排名采集
- 云同步功能:实现采集结果的云端存储和多设备同步
- 异常自动重试:优化异常处理机制,实现关键步骤的自动重试
- 代理池集成:添加代理IP池功能,降低IP被封锁的风险
- API接口开发:提供API接口,支持与其他系统集成