影刀RPA数据采集实战:京东商品价格监控系统
影刀RPA数据采集实战京东商品价格监控系统作者林焱| 适合人群有一定基础的RPA学员 | 预计阅读时间18分钟前言价格监控是电商从业者最常见的需求之一。手动查价既费时又容易遗漏而用影刀RPA搭建一套全自动价格监控系统只需一次配置之后永久自动运行。本文从零开始带你完成✅ 多商品价格自动采集✅ 价格变化检测与记录✅ 降价自动微信/钉钉推送✅ 每日价格趋势报告生成一、需求分析与系统设计用户故事作为电商运营我需要监控自家店铺20款竞品的价格当竞品降价超过5%时立刻收到通知每天生成一份价格趋势报告系统架构┌──────────────────────────────────────────────────┐ │ 价格监控系统 │ │ │ │ 商品配置Excel → 读取监控清单 │ │ ↓ │ │ 浏览器 → 采集各商品当前价格 │ │ ↓ │ │ 数据比对 → 与历史价格对比 │ │ ↓ │ │ 降价判断 → 超阈值 → 推送通知 │ │ ↓ │ │ 写入历史数据库(Excel/SQLite) │ │ ↓ │ │ 生成趋势报告 → 邮件发送 │ │ ↓ │ │ ⏰ 定时循环每2小时执行一次 │ └──────────────────────────────────────────────────┘拼多多店群自动化报活动上架二、商品配置文件设计新建config.xlsx包含以下列商品ID商品名称商品URL降价阈值(%)是否启用上次价格P001华为手机Ahttps://item.jd.com/xxxx.html5是2999P002苹果耳机Bhttps://item.jd.com/yyyy.html3是999| P003 | 小米平板C | https://item.jd.com/zzzz.html | 10 | 否 | 1599 |三、完整流程代码模块1读取商品配置# 读取配置Excel打开Excel(config.xlsx)all_config读取全部数据(包含表头True)headersall_config[0]products[]For rowinall_config[1:]:ifrow[4]是:# 只处理启用的商品products.append({id:row[0],name:row[1],url:row[2],threshold:float(row[3]),last_price:float(row[5])ifrow[5]elseNone})print(f共加载{len(products)}个监控商品)模块2采集京东价格defget_jd_price(url): 采集京东商品当前价格 返回: float 价格失败返回 None Try:打开浏览器(url,隐藏True)# 无头模式# 等待价格元素加载等待元素出现(.p-price .price,超时10)# 获取价格文本price_text获取元素文本(.p-price .price)# 清理非数字字符转为浮点数pricefloat(price_text.replace(¥,).replace(,,).strip())关闭浏览器()returnprice Catch(超时错误):写入日志(f页面加载超时:{url})关闭浏览器()returnNoneCatch(元素不存在):写入日志(f价格元素未找到:{url})关闭浏览器()returnNone模块3价格对比与告警alerts[]# 告警列表For productinproducts:current_priceget_jd_price(product[url])ifcurrent_priceisNone:continuelast_priceproduct[last_price]product_nameproduct[name]# 记录当前价格更新配置Excel(product[id],当前价格,current_price)写入价格历史(product[id],current_price,当前时间)# 对比价格iflast_priceisnotNoneandlast_price0:change_rate(last_price-current_price)/last_price*100ifchange_rateproduct[threshold]:# 降价超过阈值触发告警alert{name:product_name,last:last_price,current:current_price,drop:change_rate,url:product[url]}alerts.append(alert)写入日志(f⚠️ 降价告警{product_name}降价{change_rate:.1f}%)elifchange_rate-5:# 涨价超过5%记录不告警写入日志(f 涨价{product_name}涨价{-change_rate:.1f}%)# 更新上次价格更新配置Excel(product[id],上次价格,current_price)# 避免频繁请求被封每个商品间隔2-5秒随机等待(2000,5000)模块4发送降价通知iflen(alerts)0:# 构造通知内容msg_lines[ **价格降低告警**\n]For alertinalerts:msg_lines.append(f **{alert[name]}**\nf 原价¥{alert[last]:,.0f}\nf 现价¥{alert[current]:,.0f}\nf 降幅 **{alert[drop]:.1f}%**\nf 链接{alert[url]}\n)msg\n.join(msg_lines)# 发送到钉钉群钉钉Webhook推送(tokenYOUR_WEBHOOK_TOKEN,消息类型markdown,标题价格降低告警,内容msg)# 同时发送邮件发送邮件(收件人teamcompany.com,主题f价格告警 -{len(alerts)}个商品降价 [{今日日期}],正文msg,正文格式markdown)模块5生成每日趋势报告defgenerate_daily_report():每天晚上8点生成价格趋势报告# 从历史数据库读取今日数据今日数据查询价格历史(日期今日日期)# 统计涨价商品[pforpin今日数据ifp[变化]0]降价商品[pforpin今日数据ifp[变化]0]无变化商品[pforpin今日数据ifp[变化]0]# 生成Excel报告wb创建Excel()# Sheet1今日概况概况数据[[统计项,数量],[监控商品总数,len(今日数据)],[今日降价,len(降价商品)],[今日涨价,len(涨价商品)],[价格未变,len(无变化商品)],]写入Sheet(wb,今日概况,概况数据)# Sheet2降价商品详情按降幅排序降价商品.sort(keylambdax:x[变化])# 降幅从大到小写入Sheet(wb,降价商品,降价商品)# Sheet3价格趋势图最近7天For productinproducts[:10]:# 最多展示前10个商品七日数据查询最近7天价格(product[id])添加趋势图(wb,f{product[name]}_趋势,七日数据)保存Excel(wb,f价格报告_{今日日期}.xlsx)# 发邮件发送邮件(收件人bosscompany.com,主题f商品价格日报 -{今日日期},正文f今日共监控{len(今日数据)}个商品{len(降价商品)}个降价请查看附件。,附件[f价格报告_{今日日期}.xlsx])四、反爬虫应对策略京东有一定的反爬机制需要注意以下几点策略1随机请求间隔importrandom# 每次请求后等待随机时间2-8秒等待时间random.uniform(2,8)等待(等待时间*1000)策略2使用真实浏览器而非HTTP请求影刀RPA直接控制Chrome浏览器京东看到的是正常浏览器行为比Python requests更难被识别。策略3绕过登录墙京东部分价格需要登录才能看到会员价/Plus价需要先登录# 先检查是否已登录if元素是否存在(.nickname):print(已登录)else:打开页面(https://passport.jd.com/new/login.aspx)输入账号()输入密码()点击登录()处理滑块验证()# 如果有的话等待登录完成()策略4IP被封时的处理Catch(访问被拒绝错误):写入日志(IP可能被限制等待30分钟后重试)等待(30*60*1000)# 等待30分钟重试当前商品()五、数据存储方案选择TEMU店群矩阵自动化运营核价报活动方案优点缺点适用场景Excel直观可视化数据量大时慢10000条数据SQLite查询快零配置不能多进程写中等数据量MySQL高性能多并发需要安装配置大量数据多用户推荐SQLite适合个人/小团队使用importsqlite3# 创建数据库和表connsqlite3.connect(price_history.db)cursorconn.cursor()cursor.execute( CREATE TABLE IF NOT EXISTS price_records ( id INTEGER PRIMARY KEY AUTOINCREMENT, product_id TEXT, product_name TEXT, price REAL, record_time DATETIME DEFAULT CURRENT_TIMESTAMP, change_rate REAL ) )conn.commit()六、定时任务设置在影刀中设置定时执行任务名商品价格监控 执行频率每2小时执行一次 执行时间00:00, 02:00, 04:00, 06:00, 08:00, 10:00, 12:00, 14:00, 16:00, 18:00, 20:00, 22:00 特别设置每天晚上20:00执行完采集后额外执行生成日报子流程七、运行效果展示[2026-06-10 08:00:01] 开始执行价格监控任务 [2026-06-10 08:00:03] 已加载 20 个监控商品 [2026-06-10 08:00:15] 商品P001 华为手机A: ¥2799↓6.7%原价¥2999⚠️触发告警 [2026-06-10 08:00:23] 商品P002 苹果耳机B: ¥999持平 [2026-06-10 08:00:31] 商品P003 小米平板C已禁用跳过 ... [2026-06-10 08:03:45] 采集完成共20个商品  [2026-06-10 08:03:46] 本次共发现3个降价告警 [2026-06-10 08:03:48] 告警已发送到钉钉群 [2026-06-10 08:03:49] 价格历史已写入数据库 [2026-06-10 08:03:50] 本次任务执行完毕耗时3分49秒总结本文构建了一个完整的商品价格监控系统配置化— Excel配置文件无需修改代码即可调整监控商品自动化— 定时执行全程无需人工干预智能告警— 降价超阈值立即推送通知数据积累— 历史价格入库支持趋势分析报告输出— 每日自动生成Excel趋势报告这套系统可以扩展到淘宝、天猫、拼多多等平台只需修改采集模块中的URL和CSS选择器。本文作者林焱| 专注影刀RPA教程与自动化实战