影刀RPA新手教程:天猫超市商品数据采集完全指南——品类监控、价格走势与竞品分析
影刀RPA新手教程天猫超市商品数据采集完全指南——品类监控、价格走势与竞品分析作者林焱一、认识影刀与安装配置做电商运营这几年我最头疼的事情就是在天猫超市里一页一页翻商品。一个品类少说几十页每页十几个商品手动采集数据简直是噩梦。直到我接触了影刀RPA。安装很简单去影刀官网下载Windows版双击安装包一路下一步就行。安装完成后关键一步是打开影刀编辑器在工具栏找到「浏览器扩展管理」把Chrome扩展装上——这个不装后面网页自动化全部白搭。我当时踩过一个坑浏览器扩展装好了但网页自动化一直报错。查了半天才发现是我Chrome开了好几个用户Profile影刀扩展只装到了其中一个。折腾了整整一个下午才弄明白。建议你安装完扩展后关掉所有Chrome窗口只用一个默认Profile打开这样绝对不会出问题。更多自动化实践案例可访问 home.linyan.cloud 获取。二、元素定位四合一XPathCSS正则天猫超市的页面结构比较复杂商品列表是动态渲染的。这意味着简单的元素捕获经常定位不到目标。这里我们需要四合一组合定位策略。XPath定位商品标题//div[contains(class,product)]//a[contains(class,product-title)]/spanCSS选择器定位价格div.product-item span.price-value正则提取数字部分——商品价格通常带符号需要正则清洗正则表达式\d\.?\d* 原始文本29.90 提取结果29.90影刀中的四合一配置JSON{定位策略:四合一,主定位:XPath,xpath://div[contains(class,product-item)],备选_css:div.product-item,备选_文本:加入购物车,失败处理:等待3秒后重试}三、变量与数据类型采集天猫超市数据时我们需要设计一套合理的变量体系。全局变量配置变量名tmall_cookie 类型字符串 值从浏览器登录后获取的Cookie字符串 用途保持登录状态列表变量变量名category_list 值[休闲零食,饮料冲调,粮油调味,乳品烘焙] 用途品类轮询数据表格结构商品名称品类当前价格原价月销量店铺名称采集时间商品A零食29.9039.901.2万官方旗舰店2025-06-24店群矩阵自动化突破运营极限四、流程控制天猫超市数据采集的核心流程控制逻辑。翻页循环采集For次数循环指令获取元素文本 元素xpath//span[contains(text(),共)]//following-sibling::span 保存至total_page 指令循环 类型For次数循环 起始值1 结束值total_page 循环体 指令批量数据抓取 网页对象当前页面 抓取模式多页抓取 指令点击元素 元素xpath//a[contains(class,next) and not(contains(class,disabled))] 指令随机等待 最短1500毫秒 最长4000毫秒 结束循环品类轮询外层循环指令循环 类型ForEach循环 列表category_list 循环体 指令在网页中输入 元素idsearch-key 输入内容当前品类名称 指令点击元素 元素xpath//button[classsearch-btn] // 执行内层翻页采集 结束循环五、网页自动化实战天猫超市的网页自动化需要特别注意动态加载问题。打开并登录指令打开网页 URLhttps://chaoshi.tmall.com 浏览器Chrome 等待方式等待页面加载完成页面滚动加载处理——我当时踩过的坑天猫超市的商品列表页采用了懒加载技术。第一次做采集时我发现批量抓取指令只能抓到前面12个商品后面的全部空白。查了影刀文档才发现这是懒加载问题。解决方案是先模拟鼠标滚动到页面底部触发加载再执行抓取指令执行JS脚本 网页对象当前页面 脚本window.scrollTo(0, document.body.scrollHeight) 指令等待 时长2000毫秒 // 等待动态内容加载批量数据抓取配置指令批量数据抓取 网页对象当前页面 行元素XPath//div[contains(class,product-item)] 列配置 商品名称.//span[classproduct-title] 价格.//span[classprice-current] 原价.//span[classprice-origin] 月销量.//span[classsale-count] 保存至product_data_table六、数据处理采集回来的数据相当杂乱需要清洗和计算。价格清洗指令Python脚本 脚本内容 price_list [] for item in raw_price: clean item.replace(,).replace(,,).strip() price_list.append(float(clean)) 影刀变量赋值clean_price price_list计算折扣率指令Python脚本 脚本内容 discount_list [] for i in range(len(clean_price)): discount round(clean_price[i] / original_price[i] * 100, 1) discount_list.append(discount)数据导出Excel指令写入Excel文件 文件路径D:\数据报表\天猫超市_品类监控_{日期}.xlsx 工作表名商品数据 数据来源product_data_table 写入方式覆盖写入七、鼠标键盘与图像操作天猫超市有些按钮隐藏比较深需要鼠标悬停才能显示。鼠标悬停触发下拉菜单指令鼠标移动到元素 元素xpath//div[classsort-trigger] 移动方式模拟人工移动 指令等待 时长500毫秒 指令点击元素 元素xpath//li[contains(text(),销量从高到低)]OCR识别价格截图部分商品的价格是图片展示的需要OCR提取指令元素截图 元素xpath//img[contains(class,price-img)] 保存至price_image.png 指令OCR识别 图片price_image.png 识别引擎百度OCR 保存至ocr_price_text八、进阶技能Cookie持久化管理天猫超市需要登录每次手动登录效率低下。这里用影刀的Cookie管理功能实现持久化登录指令获取Cookie 网页对象天猫超市页面 保存至tmall_cookie 指令保存到文件 文件路径D:\配置\tmall_cookie.txt 内容tmall_cookie下次运行时直接加载指令读取文件内容 文件路径D:\配置\tmall_cookie.txt 保存至saved_cookie 指令设置Cookie 网页对象天猫超市页面 Cookie字符串saved_cookieHTTP请求补充数据有些品类数据在网页上不全可以通过抓包获取API直接请求指令发送HTTP请求 方法GET URLhttps://api.tmall.com/search?categoryIdxxxpageNo1pageSize50 请求头 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Referer: https://chaoshi.tmall.com 保存响应至api_response九、平台实战——品类监控与竞品分析完整的天猫超市品类监控流程设计。步骤一关键词搜索选定品类关键词依次搜索并采集商品列表。步骤二价格走势记录每天定时采集同一批商品的价格建立价格走势数据库指令读取Excel文件 文件路径D:\数据报表\天猫超市_品类监控_{昨天日期}.xlsx 工作表商品数据 读取范围全部 指令Python脚本 脚本内容 # 对比今天和昨天的价格变化 changes [] for today_item, yesterday_item in zip(today_data, yesterday_data): if today_item[price] ! yesterday_item[price]: changes.append({ 商品: today_item[name], 昨天价格: yesterday_item[price], 今天价格: today_item[price], 变化: today_item[price] - yesterday_item[price] })步骤三竞品分析采集同品类不同店铺的定价策略指令Python脚本 脚本内容 # 按店铺分组统计 shop_stats {} for item in all_products: shop item[shop_name] if shop not in shop_stats: shop_stats[shop] {count: 0, avg_price: 0, prices: []} shop_stats[shop][count] 1 shop_stats[shop][prices].append(item[price]) for shop in shop_stats: prices shop_stats[shop][prices] shop_stats[shop][avg_price] round(sum(prices) / len(prices), 2) shop_stats[shop][min_price] min(prices) shop_stats[shop][max_price] max(prices)我当时做这个品类监控第一版流程跑了三天就出了大问题——数据的采集时间戳全是一样的根本看不出价格走势。后来才想到在每次采集前记录当前时间单独存一列采集时间。这个细节看起来小但对后续分析影响巨大。十、系统联动temu店群自动化报活动案例飞书机器人通知价格出现大幅波动时自动推送到飞书群指令发送HTTP请求 方法POST URLhttps://open.feishu.cn/open-apis/bot/v2/hook/your_webhook_token Content-Typeapplication/json 请求体 { msg_type: interactive, card: { header: {title: {content: 天猫超市价格预警}}, elements: [ {tag: div, text: {content: 商品【】价格从【】降至【】降幅达【】%}} ] } }数据库存储指令执行SQL 数据库连接mysql://localhost:3306/rpa_db SQLINSERT INTO tmall_monitor (product_name, category, price, origin_price, sales, shop, collect_time) VALUES (?, ?, ?, ?, ?, ?, ?) 参数列表[product_name, category, price, origin_price, sales, shop, collect_time]定时任务配置在影刀中设置每天凌晨2点自动运行错开流量高峰指令定时任务 执行时间每天 02:00:00 执行流程天猫超市品类监控十一、工程化与规范流程目录结构天猫超市监控/ ├── 主流程.flow ├── 子流程/ │ ├── 登录.flow │ ├── 品类采集.flow │ └── 数据清洗.flow ├── 配置/ │ ├── cookie.txt │ └── 品类列表.json └── 输出/ └── 报表_{日期}.xlsx变量命名规范商品名称product_name小写下划线当前价格current_price品类列表category_list集合类后缀_list数据表格data_table表格类后缀_table异常处理规范指令TryCatch 尝试 执行主采集流程 捕获异常 指令截图保存 指令发送邮件通知 主题天猫超市采集异常 内容错误信息 截图 指令记录日志 日志内容异常时间 异常详情 当前品类十二、速查表与常见报错XPath速查表定位目标XPath表达式商品名称//span[contains(class,‘product-title’)]当前价格//span[contains(class,‘price-current’)]原价(划线价)//span[contains(class,‘price-origin’)]月销量//span[contains(class,‘sale-num’)]下一页按钮//a[contains(class,‘next’)]搜索框//input[id‘search-key’]常见报错处理报错1元素查找超时原因页面加载慢或元素动态生成解决将固定等待改为「等待元素出现」超时设为10000毫秒报错2Cookie失效原因登录过期解决加入Cookie有效性检测逻辑失效时自动重新登录报错3批量抓取数量不对原因懒加载导致部分元素未渲染解决在抓取前执行滚动到底部脚本等待2秒后重试报错4价格格式不一致原因部分商品显示价格待询或活动价解决在数据清洗阶段用正则匹配过滤非数字字符内容标签影刀RPA 天猫超市 数据采集 品类监控 价格走势 竞品分析 网页自动化作者林焱