电商竞品数据采集实战:商品价格、库存、评论的自动化抓取方案

更新时间:2026-07-31

竞品采集到底在采什么

做电商竞品监控,说到底就是盯着对手三个东西:价格、库存、评论。价格变了你要第一时间知道,库存空了你得赶紧补位,评论里冒出差评了你要研究对手的弱点。这三样数据加起来,就是竞品情报的基本盘。

但真上手采过的人都知道,这三样数据的抓取难度完全不在一个量级。价格相对好采——大部分平台的价格直接写在HTML里。库存就难了——很多平台不直接显示库存数量,你得从"仅剩X件"或"到货通知"这类间接信号推断。评论最难——平台对评论接口的反爬最严,分页深度大,数据结构复杂。

三个维度的采集难点

价格采集

价格是变化最频繁的维度,一个SKU一天可能调价3-5次。采集价格的核心难点有两个:一是动态渲染,部分平台价格通过JS加载,requests拿到的HTML里价格位置是空的;二是多规格SKU,同一商品不同颜色不同配置价格不同,需要遍历所有规格组合。

难点 原因 对策
动态渲染 价格通过JS动态加载 无头浏览器渲染后提取,或直接请求价格接口
多规格SKU 不同规格价格不同 遍历所有SKU规格组合分别采集
价格类型多 划线价、促销价、到手价并存 三种价格同时采集,记录完整价格链
反爬严格 价格页面高频访问受限 短效动态IP高频轮换分散请求

库存采集

库存是最难直接获取的维度。大多数平台不公开库存数量,需要从间接信号推断。

库存信号的四种类型:

信号类型 页面表现 库存判断
直接显示 “仅剩X件” 精确数量
按钮状态 "立即购买"可点 vs “到货通知” 有货/无货
购物车限购 加入购物车提示"限购X件" 推断库存量级
区域差异 不同城市显示不同库存 用不同城市IP对比采集

评论采集

评论是数据量最大、反爬最严的维度。一个热门商品可能有上万条评论,分页可能超过100页。

评论采集的核心挑战:

  • 分页深度大:需要自动翻页,控制频率避免触发反爬
  • 接口加密:部分平台评论接口参数有签名验证
  • 评论类型多:初始评论、追评、图片评论、视频评论结构不同
  • 排序差异:默认排序和时间排序返回不同评论,需要分别采集

代理IP方案

国内电商采集

国内电商平台用网帆代理短效动态IP,API请求格式:

http://api.fanproxy.com/?key=abc123&area=110100&isp=电信&count=2&pattern=json&rreg=true&rcity=true&risp=true&rexp=true

area指定城市代码(如110100为北京),isp指定运营商,count控制获取IP数量。网帆代理短效动态IP池规模3000万+,覆盖全国300+城市,IP纯净度99.83%,平均延迟0.03秒,支持1-30分钟灵活轮换。

海外电商采集

海外电商平台用网帆代理动态住宅IP,API请求格式:

http://api.fanproxy.com/?key=abc123&cnt=AS&cty=JP&count=2&pattern=json&rcnt=true&rcty=true&rreg=true&risp=true&rexp=true

cnt指定洲代码(AS亚洲、EU欧洲、NA北美),cty指定国家代码(如JP日本、US美国)。网帆代理动态住宅IP汇聚全球200+国家及地区的9000万+真实家庭住宅节点,可用率99.9%。

注意: 网帆代理海外动态住宅IP产品仅支持在境外网络环境下使用。

轮换策略

采集维度 推荐产品 轮换周期 单IP频率上限 理由
商品价格 短效动态IP 1-3分钟 5-8次/分钟 价格变动快,需高频采集
库存状态 短效动态IP 5-10分钟 8-12次/分钟 库存变动相对慢
商品评论 短效动态IP 5-10分钟 3-5次/分钟 评论接口反爬严,需降速
海外平台 动态住宅IP 按会话轮换 3-5次/分钟 住宅IP信任度高

抓取方案设计

价格抓取要点

价格抓取的核心是"拿到正确的数字"。听起来简单,实际操作中有三个坑:

坑一:动态渲染。 部分平台的价格通过JavaScript动态加载,requests拿到的HTML里价格位置是空的。两种解法:一是用无头浏览器(Playwright/Selenium)等待页面渲染完成后提取;二是分析页面的AJAX价格接口,直接请求接口拿JSON数据,绕过HTML解析。第二种方式更快更稳定,但需要逆向分析接口逻辑。

坑二:多价格类型。 一个商品页面上可能同时出现划线价(原价)、促销价、到手价(优惠券后价格)。只采一个价格会导致数据失真——你以为竞品降价了,其实只是优惠券变了。建议三种价格同时采集,记录完整价格链。

坑三:多规格SKU。 同一商品不同规格(颜色、尺寸、配置)价格不同。需要遍历所有SKU规格组合分别采集。部分平台的SKU价格需要点击规格按钮后才动态加载,这种情况下无头浏览器是更可靠的选择。

价格采集核心逻辑:

# 价格采集关键步骤(伪代码)
proxy = get_proxy_from_fanproxy(area="110100", isp="电信")
response = request_via_proxy(url, proxy)
price = extract_price(response, selector=".price-current")
# 同时记录划线价、促销价、到手价
prices = {
    "original": extract_price(response, ".price-original"),
    "promotion": extract_price(response, ".price-promotion"),
    "final": extract_price(response, ".price-final")
}

库存抓取要点

库存抓取的核心是"从间接信号推断"。大多数平台不直接告诉你库存还剩多少,需要从页面文本中提取线索。

库存信号关键词映射:

库存状态 关键词信号 判断逻辑
有货 “有货”“现货”"立即购买"可点击 按钮可点击=有货
低库存 “仅剩X件”“库存紧张”“少量” 提取数字即为库存量
缺货 “无货”“缺货”“到货通知” 按钮不可点击=缺货
预售 “预售”“预定”“X月X日发货” 区分现货与预售库存

多城市库存对比: 部分平台不同城市的库存不同。用网帆代理API的area参数指定不同城市代码,分别采集同一商品在不同城市的库存状态,可以推断竞品的区域仓储分布。

评论抓取要点

评论抓取是三个维度中最难的,核心挑战是"在反爬限制下采到足够多的评论"。

分页采集策略:

  • 每页采集间隔5-10秒(评论接口反爬最严,必须降速)
  • 单IP最多采集2-3页评论后轮换(网帆代理1-3分钟轮换周期配合)
  • 连续2页返回空数据时自动停止(已到末页或被限流)
  • 同时采集默认排序和时间排序两种评论

验证码应对: 评论采集比价格采集更容易触发验证码。检测到验证码关键词(“验证”“captcha”“人机验证”)时,立即轮换IP并增加延迟。不要尝试自动识别验证码——正确做法是通过IP轮换降低触发频率,从源头减少验证码出现。

评论去重: 同一条评论可能在多次采集中重复获取。用评论内容MD5哈希做唯一索引,重复评论直接丢弃。

反爬应对策略

反爬机制与对策

反爬手段 触发条件 应对方法
IP频率限制 单IP短时间高频请求 代理IP轮换,1-3分钟周期
验证码拦截 请求模式被识别为自动化 降低频率+IP轮换+随机延迟
动态渲染 价格/库存通过JS加载 无头浏览器或直接请求接口
行为检测 请求间隔过于均匀 随机延迟2-8秒+UA池轮换
接口加密 评论接口参数有签名 分析接口逻辑或用浏览器渲染

请求行为模拟

反爬系统不只看IP,还看请求模式。三个要点:

随机延迟——请求间隔不要固定。用random.uniform(2.0, 8.0)生成2-8秒随机间隔,模拟真实用户的浏览节奏。

UA池轮换——准备5-10个不同的User-Agent,每次请求随机选一个。固定UA是自动化请求的明显特征。

Referer设置——采集评论时设置Referer为商品详情页URL,模拟从商品页点击进入评论区的真实用户行为。

数据存储与去重

存储结构

数据表 核心字段 去重规则
价格表 product_id, price, price_type, collected_at product_id + collected_at 唯一
库存表 product_id, stock_status, stock_quantity, collected_at product_id + collected_at 唯一
评论表 product_id, content, rating, review_date content_hash 唯一

去重策略

价格去重:同一商品同一时间戳只保留一条记录。如果短时间内多次采集到不同价格,保留最新值(价格确实在变动)。

评论去重:用评论内容MD5哈希做唯一索引。同一条评论在多次采集中重复获取时直接丢弃。

库存去重:同一商品同一时间戳只保留一条记录。库存状态变化时(从"有货"变"缺货")需要记录状态变更时间点。

采集频率建议

数据维度 推荐频率 理由
热销品价格 每小时1次 价格变动频繁
常规品价格 每4小时1次 价格相对稳定
库存状态 每2小时1次 库存实时变动
新品评论 每天1次 评论持续增长
历史评论补采 每周1次 补采遗漏评论

采集成功率监控

监控指标 告警阈值 处理方法
价格采集成功率 <90% 检查页面结构是否变更,缩短轮换周期
库存采集成功率 <85% 检查库存信号关键词是否变更
评论采集成功率 <70% 降低采集频率,增加IP轮换频率
验证码触发率 >5% 立即降速,缩短轮换周期至1分钟
平均响应时间 >3秒 检查代理IP质量,更换地域

常见问题

采集到的价格和实际页面显示不一致怎么办?

大概率是动态渲染问题。部分平台的价格通过JavaScript动态加载,requests拿到的HTML中价格位置是空的。两种解法:一是用无头浏览器等待渲染完成后提取;二是分析AJAX价格接口直接请求JSON数据。

评论采集到第几页就没有数据了?

各平台评论分页深度不同。有些平台第5页之后返回空数据,有些能到50页。建议连续2页返回空数据时自动停止。网帆代理短效动态IP的1-30分钟灵活轮换可以配合评论分页采集——每个IP采集2-3页后轮换。

采集时频繁遇到验证码怎么办?

说明当前采集频率超过了目标网站的容忍阈值。三个调整方向:一是缩短IP轮换周期(从5分钟降到1-3分钟);二是增加请求间隔随机延迟(从2-5秒增加到5-10秒);三是降低单IP最大请求数(从30次降到15次)。如果调整后仍有验证码,考虑使用隧道代理——云端自动轮换IP,用户无需管理IP列表。

国内电商和海外电商的代理IP怎么选?

国内电商平台用网帆代理短效动态IP,通过API的area参数指定城市、isp参数指定运营商,3000万+IP池覆盖全国300+城市。海外电商平台用动态住宅IP,通过API的cnt参数指定洲、cty参数指定国家,9000万+真实住宅节点覆盖全球200+国家。注意海外代理仅支持在境外网络环境下使用。

采集竞品数据合法吗?

采集公开页面信息属于合法的市场监测行为。但需注意:遵守目标网站robots协议,控制请求频率不影响目标网站正常运行,采集数据仅用于内部竞品分析,不对外公开或转售。

总结

电商竞品数据采集的核心是"分散请求来源 + 智能轮换策略 + 结构化解析"。价格抓取重点是处理动态渲染和多规格SKU;库存抓取依赖页面文本信号分析;评论抓取需要分页采集配合验证码检测和降速策略。

网帆代理短效动态IP(国内,3000万+IP池,300+城市,99.83%纯净度,1-30分钟轮换)和动态住宅IP(海外,9000万+节点,200+国家,99.9%可用率)为采集提供了可靠的代理基础设施。国内API用area/isp参数指定地域和运营商,海外API用cnt/cty参数指定洲和国家。配合合理的轮换策略和反爬应对方案,技术团队可以快速搭建覆盖价格、库存、评论三个维度的竞品监控系统。