影刀RPA新手教程:得物App自动化完全指南——商品信息采集、价格监控与库存管理
影刀RPA新手教程:得物App自动化完全指南——商品信息采集、价格监控与库存管理
做潮流球鞋生意的人都知道得物的数据有多值钱。我最早是每天手动打开得物App,一个商品一个商品看价格、截图、记库存,效率极低。后来用影刀RPA写了一套流程,价格变动自动告警,库存不足自动提醒,每天省了至少4个小时。
认识影刀与安装
影刀社区版免费下载,安装很简单。唯一要注意的是——如果你想操作得物App,需要装影刀的ADB驱动,这样影刀才能连接手机。装好影刀后,在手机开发者选项里打开USB调试,用数据线连电脑,影刀会自动识别设备。如果是网页版得物,那就装Chrome插件即可。界面这块不用怕,左边指令面板,中间画布拖拽,上手很快。
元素定位四合一:XPath + CSS + 正则
得物网页版用Chrome走驱动模式,App版用ADB走图像识别+元素定位。先说网页版:

//div[@class='product-card'] 定位商品卡片
//span[contains(@class,'price')]/text() 提取价格文本
//img[contains(@src,'cdn.dewu.com')] 定位商品图片
//a[starts-with(@href,'/product/')] 定位商品链接
//ul[@class='sku-list']/li[position()<5] 前4个SKU
//button[text()='立即购买'] 定位购买按钮
CSS选择器两种场景:
div.product-list > div.card 商品列表下直接子卡片
.price span.current-price 当前价格
.size-item:not(.disabled) 可选尺码
正则表达式在解析商品标题时很实用——得物的标题格式是"品牌 商品名 货号",用^(.*?)\s+(.*?)\s+(\w+)$ 就能把三部分拆出来。
变量与数据类型
价格监控的核心数据结构:
product_data = {
'spu_id': 'DY20240615001',
'name': 'Air Jordan 1 Retro High OG',
'sizes': ['40', '41', '42', '43'],
'prices': {},

'update_time': '2024-06-15 14:30:00'
}
列表存多个商品的监控数据,每个元素是一个字典。JSON转对象处理得物接口返回数据,用"获取JSON节点值"按路径data.spuInfo.priceList[*].price提取所有尺码价格。字符串操作在拼接商品链接时经常用——得物的商品URL是固定模板拼接SPU ID:prefix + spu_id + suffix。
流程控制
价格监控的流程逻辑:
店群矩阵自动化突破运营极限!
设置价格阈值
无限循环
├─ ForEach product in monitor_list
│ ├─ 打开商品页面
│ ├─ 获取当前价格
│ ├─ If 当前价格 < 阈值
│ │ └─ 发送降价提醒
│ └─ If 库存 < 警戒值
│ └─ 发送库存预警
│ └─ 保存当前数据到Excel
└─ 等待5分钟
While循环用在不确定商品列表页有多少页时——一直翻页直到"加载更多"按钮消失。Try-Catch包在每个商品的获取逻辑外面,单个商品获取失败不影响其他商品。
网页自动化
得物网页版的反爬比较强。等待策略我用了"等待元素出现+额外延迟"的组合——先等目标元素加载完成,再额外等1-3秒,避免触发频率限制。
弹窗处理不复杂,主要是登录弹窗和新人优惠券弹窗。登录弹窗用Esc关闭,优惠券弹窗找关闭按钮点掉。如果弹窗太顽固,就用图像识别找到x图标点击。
翻页方面,得物的商品列表用的是"加载更多"按钮而不是分页。流程就是无限循环点击"加载更多",直到这个按钮的文本变成"没有更多了"或者按钮消失。每加载一批新商品,用index去重防止重复采集。
窗口切换:得物有时点击商品会在新标签页打开详情,用"获取已打开的网页对象"切换到新窗口,处理完关闭回来继续。
数据处理
采集的商品数据写入Excel,我维护三个sheet:价格趋势sheet记录每次采集的价格变化、库存监控sheet记录各尺码库存、商品基础信息sheet存静态数据。
# 价格趋势写入
price_trend = [['时间', '商品ID', '尺码', '价格']]
for record in new_price_records:
price_trend.append([record['time'], record['spu_id'], record['size'], record['price']])
write_excel_range(price_trend, '价格趋势', first_empty_row)
文本处理:从得物商品标题中提取品牌、货号、发售年份等关键信息。用正则提取,用strip去掉多余空格。
JSON解析是核心——得物后台接口返回的数据结构复杂,要一层层解析。我写了个Python解析函数处理嵌套JSON:

def parse_dewu_product(json_data):
result = {}
result['spu_id'] = json_data['data']['spuInfo']['spuId']
result['name'] = json_data['data']['spuInfo']['goodsName']
result['brand'] = json_data['data']['spuInfo']['brandName']
result['price_list'] = []
for item in json_data['data']['spuInfo']['priceList']:
result['price_list'].append({
'size': item['property'],
'price': item['price'],
'stock': item.get('stock', 0)
})
return result
鼠标键盘图像自动化
得物App端我用ADB连接手机,通过图像识别操作。常用指令:
wait_appear('下单按钮.png')等待下单按钮出现click('搜索图标.png')点击搜索hover('商品主图.png', 3)悬停3秒看详情
锚点定位的精髓:先以手机屏幕左上角为原点(0,0),找到搜索栏的固定位置,再相对于搜索栏偏移找到其他元素。手机端的好处是屏幕分辨率固定,坐标不会变。
进阶技能
得物的核心数据都在App里,网页版数据不全。用ADB控制手机,结合OCR识别屏幕上的文字。得物的价格标签位置固定,直接截屏那一小块区域OCR识别:
def ocr_extract_price(image_path):
# 截取价格区域
screenshot_region(100, 500, 400, 560)
# OCR识别
price_text = ocr_recognize('price_crop.png')
# 提取数字
import re
return float(re.search(r'\d+', price_text).group())
HTTP请求抓得物H5接口。得物的H5页面接口相对宽松,用Charles抓包拿到接口地址和参数格式,影刀的HTTP请求直接调用。Python模块用来算签名——得物的接口有sign参数校验。
平台实战
完整的得物价格监控自动化:
采集环节:打开得物App→搜索目标商品→进入商品详情→记录各尺码价格和库存→截图保存→写入Excel。支持批量监控,从商品列表一次采集几十个SKU。
监控环节:影刀定时运行(每小时一次),对比当前价与历史价。价格下降超过3%触发告警,库存低于警戒值也是。告警信息包含商品名称、尺码、原价、现价、降幅百分比。
库存管理:定期扫描关注列表的所有商品,统计各尺码库存。当特定热门尺码(如42、43码)库存紧张时提前预警,方便补货。
整个过程我跑了三个月,帮我抓到了两次限量发售的低价入仓机会。

系统联动
降价告警通过飞书机器人发到我的群聊,消息示例:
def price_alert(spu_name, size, old_price, new_price):
drop_pct = round((old_price - new_price) / old_price * 100, 1)
msg = {
"msg_type": "text",
"content": {
"text": f"降价提醒\n商品:{spu_name}\n尺码:{size}\n原价:{old_price}\n现价:{new_price}\n降幅:{drop_pct}%"
}
}
requests.post(webhook_url, json=msg)
飞书多维表格做价格看板,每条价格变动的记录自动插入一行,包含时间、商品、尺码、价格、变动类型。团队都能实时看到。
temu店群自动化报活动案例
邮件通知用于周报——每周日晚上汇总本周价格波动TOP10,生成HTML邮件自动发给老板。
定时任务用影刀中控的cron表达式配置。价格监控每小时一次 0 0 * * * ?,库存扫描每4小时一次 0 0 0/4 * * ?,周报每周日晚8点 0 0 20 ? * SUN。
工程化与规范
子流程拆分:
- “得物登录”:处理登录逻辑,维护Cookie
- “商品采集”:单个商品的完整采集
- “价格对比”:当前价和历史价对比
- “告警推送”:统一的消息发送逻辑
调试技巧回顾:有次价格监控流程跑着跑着突然停了,打断点排查发现是得物改版了——价格元素从span.price-current改成了div.price-box > span.current。更新XPath就恢复了。所以流程里要做好版本兼容判断。
命名规范:变量用dw_前缀表示得物相关,如dw_spu_id、dw_price_list。Excel文件用日期命名如得物价格监控_20240624.xlsx。子流程统一"模块_平台"的命名方式。
有些朋友问我学影刀有什么捷径,我觉得没有。但多看别人的实操案例确实能少走弯路。像 home.linyan.cloud 上就有不少各行业的自动化实战分享,可以参考思路。
速查表与常见报错
得物常见报错及处理:

App连接失败:检查USB调试是否打开,数据线是否良好,ADB驱动是否安装。命令行输入adb devices看设备是否被识别。
元素定位失败(网页版):得物前端改版频率高,XPath容易失效。定期检查流程,做好元素兼容。
采集频率过高被封:得物有反爬机制。流程里加随机等待时间(2-5秒),不要太密集。
OCR识别不准:价格字体特殊时OCR容易出错。截取更大区域做识别,或者用多张截图对比提高准确率。
图片下载失败:得物图片有防盗链,直接用src可能403。需要在请求头里加Referer。
JSON解析报错:接口返回的数据结构有时会变。用Try-Catch包住解析逻辑,解析失败记录原始JSON方便排查。
库存数据不一致:不同入口看到的库存可能不同(缓存延迟)。以商品详情页库存为准,多采集一次取较新的值。

循环时App卡顿:手机内存不够导致。每处理10个商品后加一次等待并清理后台。
#影刀RPA #得物自动化 #球鞋电商 #价格监控 #RPA新手教程
作者:林焱
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)