竞品采集到底在采什么

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

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

三个维度的采集难点

价格采集

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

难点

原因

对策

动态渲染

价格通过JS动态加载

无头浏览器渲染后提取,或直接请求价格接口

多规格SKU

不同规格价格不同

遍历所有SKU规格组合分别采集

价格类型多

划线价、促销价、到手价并存

三种价格同时采集,记录完整价格链

反爬严格

价格页面高频访问受限

短效动态IP高频轮换分散请求

库存采集

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

库存信号的四种类型:

信号类型

页面表现

库存判断

直接显示

“仅剩X件”

精确数量

按钮状态

"立即购买"可点 vs “到货通知”

有货/无货

购物车限购

加入购物车提示"限购X件"

推断库存量级

区域差异

不同城市显示不同库存

用不同城市IP对比采集

评论采集

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

评论采集的核心挑战:

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

代理IP方案

国内电商采集

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

zllpmyyrp=_示例.com/?key=abc123&area=110100&isp=电信&count=2&pattern=json&rreg=true&rcity=true&risp=true&rexp=true

area指定城市代码(如110100为北京),isp指定运营商,count控制获取IP数量。

海外电商采集

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

zllpmyyrp=_示例.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频率上限

理由

商品价格

短效动态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页评论后轮换连续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轮换周期(从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协议,控制请求频率不影响目标网站正常运行,采集数据仅用于内部竞品分析,不对外公开或转售。

原文来自邦阅网 (52by.com) - www.52by.com/article/229255

声明:该文观点仅代表作者本人,邦阅网系信息发布平台,仅提供信息存储空间服务,若存在侵权问题,请及时联系邦阅网或作者进行删除。

评论
登录 后参与评论
发表你的高见