电商数据抓取项目最危险的时刻,往往不是任务报错,而是任务显示“成功”。我曾在一次商品价格监测项目复盘中看到:采集任务成功率达到 99.6%,每日入库商品数也基本稳定,但业务方抽查 120 个商品后,发现 17 个价格抓取成了划线价,9 个商品把不同 SKU 合并到了一起,另有 14 个已下架商品仍被标记为在售。技术上是“抓到了”,业务上却是“不能用”。
所以,电商数据抓取的质量校验,不能从“页面有没有返回数据”开始,而要从“这批数据能不能支撑业务判断”开始。对产品经理而言,真正需要设计的不是一套复杂的爬虫程序,而是一套能够回答抓了什么、是否抓对、何时有效、出了问题谁处理的质量方案。
抓取成功通常只说明请求完成、解析程序运行结束,或者系统拿到了某个页面的返回内容。它不代表字段含义正确,也不代表数据符合业务口径,更不代表下游报表、选品模型或价格策略可以直接使用。
产品经理应该把“任务成功”拆成四个彼此独立的判断:
这四个判断中,第一项最容易被监控系统捕捉,后面三项却更容易造成隐蔽损失。一个商品列表有 10 万条记录,并不意味着它能用于竞品排名;如果其中 20% 的价格口径不一致,数量越大,错误扩散得越快。

数据质量指标不能脱离使用场景。一个商品详情页中的“评价数”对竞品舆情分析很重要,但对只关注价格波动的项目可能只是辅助字段;商品图片缺失对商品主数据管理可能是阻断问题,对每日价格监测却可能只是提示问题。
因此,产品经理不能直接复制一套通用阈值,而要先回答三个问题:
如果价格字段用于自动调价,错误价格可能直接造成经营损失,应设置更严格的阻断规则。如果价格只是用于人工参考,可以将少量异常放入待复核队列,避免因个别特殊促销页面阻断整批数据。
研发可以解决页面访问、接口调用、解析和入库问题,但“什么才算正确”必须由产品经理组织业务共同定义。PRD 中写“抓取商品价格”远远不够,至少要补充价格来源、价格类型、单位、币种、促销状态、采集时间和异常处理。
我通常把质量方案压缩成一句验收口径:关键字段必须可追溯,业务含义必须可解释,异常记录必须可处理,历史数据必须可比较。这四点比单纯写一个“完整率达到 99%”更有指导价值。
电商页面经常同时展示原价、划线价、当前售价、活动价、会员价和领券后价格。不同平台、不同活动、不同登录状态下,页面展示内容还可能发生变化。采集程序只要选错一个 DOM 节点,最终就可能稳定地抓错价格。
这类错误最麻烦的地方是,它通常不会触发程序异常。系统拿到了一个合法的数字,例如 199 元;但业务真正想要的是券后 159 元,或者统一比较口径下的活动价 179 元。数字本身没有坏,坏的是数字的业务含义。
在价格监测项目中,我建议产品经理不要使用“商品价格”这种模糊字段,而是至少拆成以下字段:
| 字段 | 定义 | 是否建议作为主比较字段 | 常见风险 |
|---|---|---|---|
| 页面标价 | 商品页面直接展示的当前价格 | 视业务而定 | 可能包含活动条件,也可能不含优惠券 |
| 划线价 | 页面用于对比展示的原价或参考价 | 通常不建议 | 容易被误当成实际成交价格 |
| 活动价 | 参与特定促销活动后的价格 | 适合促销监测 | 活动范围、时间和资格可能有限 |
| 券后价 | 满足领券条件后的价格 | 谨慎使用 | 可能要求登录、领券或满足门槛 |
| 统一比较价 | 根据业务规则转换后的可比价格 | 适合分析 | 需要保留转换过程,不能只保留结果 |
商品主数据项目中,最常见的结构性错误不是漏抓,而是把不同层级的数据强行合并。一个商品 SPU 下可能有多个 SKU,不同颜色、容量、套餐和规格对应不同价格与库存。如果产品经理只要求“按商品去重”,研发很可能用商品标题或详情页链接去重,导致多规格商品被合并。
正确做法是先定义业务主键。平台商品 ID 通常用于识别平台上的商品实体,SKU ID 用于识别具体规格,内部商品 ID 则用于跨平台归一化。三者可以关联,但不应该互相替代。
例如,同一款 500 毫升洗发水有单瓶、两瓶装和家庭装。它们的标题高度相似,甚至共用详情页,但价格、库存和促销条件完全不同。如果用标题去重,系统可能只保留其中一个价格,后续的竞品比较和毛利分析都会失真。
销量字段看起来比价格简单,实际却存在“1000+”“近 30 天售出 5000 件”“已售 10 万+”等多种表达。产品经理需要确认采集结果应保存原始文本、标准化数值,还是两者都保存。
我的建议是同时保留三个字段:原始销量文本、标准化销量值、标准化规则版本。这样当业务方质疑“为什么这个商品销量变少了”时,可以追溯是页面展示变化,还是解析规则变化。
“1000+”不应被直接存成 1000 并假装精确。更稳妥的方式是将它存为区间、下限值或带精度标识的估算值。数据模型必须诚实地表达不确定性,而不是用一个看似精确的整数掩盖页面本身的模糊表达。
商品页面打不开,不一定代表商品下架;页面显示“暂时无货”,也不一定代表商品已经下架;平台触发访问限制时,返回的可能是一个结构完整但内容为空的页面。若产品经理只设计“在售”和“下架”两个枚举,系统很容易把技术异常误判成商品状态。
至少建议区分:在售、有货、无货、已下架、页面不可访问、解析失败、状态未知。状态未知是很重要的保护性状态,它可以避免系统在证据不足时做出过度判断。

任务成功率适合衡量系统运行情况,不适合单独衡量数据质量。入库条数也只是数量指标,无法说明记录是不是重复、字段是不是错位、价格是不是抓错。
更危险的是,数量可能在页面结构变化后仍然保持稳定。例如页面中商品卡片的标题节点没有变化,但价格节点已经从页面价切换成划线价。程序仍然能找到价格元素,记录数也没有减少,监控系统就会认为一切正常。
产品经理至少要同时看四类指标:任务状态、记录数量、关键字段质量、抽样语义正确率。前两类发现“有没有运行”,后两类才判断“是否值得使用”。
一个字段有值,不等于字段完整。例如价格字段抓到了“到手价 159 元”,但系统要求的是页面活动价;商品标题有值,但被截断到只剩下“新款夏季”;采集时间有值,但记录的是入库时间而不是实际采集时间。
因此,完整性应至少拆为字段存在、字段格式、字段长度和字段业务可解释性四个层次。非空率只能覆盖第一层,不能代替其他校验。
“所有字段完整率必须达到 99%”听起来很专业,实际可能不适用。商品 ID 缺失 1% 可能已经导致数据无法去重,图片链接缺失 5% 也许并不影响价格分析,评价标签缺失 10% 则要看业务用途。
质量阈值应按字段重要性分级。关键主键、价格、采集时间和商品状态通常属于高优先级字段;图片、卖点文本和推荐标签可以根据场景设为中优先级或低优先级。
删除异常数据会让主表看起来更干净,却会损失问题证据。后续研发无法判断异常是页面变化、解析错误、网络失败还是业务本身的特殊情况。
更好的做法是将原始数据、清洗后数据和异常记录分层保存。业务使用层可以过滤异常,但原始层和异常层必须保留足够的追溯信息,包括来源链接、采集时间、规则版本、错误类型和处理结果。
抽样检查是必要的,但抽样方法不合理时,很容易得到虚假的安全感。只抽查搜索结果第一页、只抽查普通商品、只抽查没有促销的商品,无法覆盖真正高风险的场景。
抽样应覆盖不同平台、类目、价格区间、促销状态、商品状态和页面模板。新接入平台或刚改过解析规则时,抽样比例应明显高于稳定运行阶段。
“发现价格缺失后发送告警”并不是完整方案。告警发给谁、是否自动重试、重试几次、是否阻断入库、业务能否继续使用、修复后如何补数,这些都必须写清楚。
如果异常没有负责人和关闭标准,告警数量越多,团队越容易产生告警疲劳。最终大家会把告警当成背景噪音,真正严重的问题反而被忽略。

我在设计抓取质量方案时,不会先从字段列表开始,而会先问业务最终要做什么。如果用途是价格监测,价格、商品 ID、SKU、采集时间和促销状态是核心;如果用途是商品主数据管理,标题、品牌、类目、规格和图片完整性的重要性会明显上升。
可以使用下面的判断表将字段分成三类:
| 字段级别 | 判断标准 | 典型字段 | 异常动作 |
|---|---|---|---|
| 核心字段 | 出错会导致记录无法识别、无法比较或产生严重误判 | 平台商品 ID、SKU ID、价格、采集时间 | 阻断、重试、告警、人工确认 |
| 重要字段 | 出错会降低分析质量,但存在替代方式 | 标题、品牌、类目、状态、销量 | 告警、异常队列、限期修复 |
| 辅助字段 | 缺失不影响主要业务流程,但会降低展示或扩展分析能力 | 图片、卖点、标签、部分评价文本 | 记录、统计、定期治理 |
字段分级的价值在于,它让团队可以在数据不完美时做出有依据的取舍,而不是陷入“所有字段都必须绝对正确”的不现实要求。
完整性回答“应该有的数据有没有”。它包括关键字段非空、记录数量合理、批次没有大面积缺失,也包括分页是否完整、店铺和类目是否出现整段消失。
准确性回答“拿到的值是不是原本的值”。这不仅是字符层面的准确,也包括价格类型、销量口径、商品状态和规格关系的准确。
一致性回答“不同时间、不同平台或不同来源的数据能不能比较”。金额单位、时间时区、类目编码、状态枚举和 SKU 关系都属于一致性问题。
时效性回答“数据在业务使用时是否还有效”。日更项目关注是否按时完成,实时预警项目则要关注延迟、重试耗时和最后成功时间。
这四个维度不应简单加总成一个总分。一个批次即使整体质量评分为 95 分,只要价格字段发生大面积口径错误,也不能直接交付给调价系统。
阻断型规则适合处理无法安全使用的数据。例如商品主键为空、价格为负数、采集时间缺失、数据来源无法确认,或者关键字段整体解析失败。阻断的目的不是追求零异常,而是防止错误数据进入下游。
告警型规则适合处理数据可能有问题、但仍需要结合上下文判断的情况。例如单个店铺商品数下降 30%、某类目价格整体上涨、少量商品缺少图片或销量文本发生变化。
观察型规则适合记录低风险变化。例如某些标题出现格式调整、非核心标签缺失、少量字段长度变化。观察型规则也要保留统计趋势,否则低风险问题可能逐步积累成高风险问题。

没有证据来源的规则,很容易在评审时变成个人偏好。比如“价格波动超过 20%就告警”,产品经理需要说明这个阈值来自历史波动、业务容忍度,还是仅仅来自经验。
常见证据包括:
完整闭环至少包含发现、记录、通知、处理、复核和复盘六个环节。产品经理要让研发和数据团队知道异常发生后系统要做什么,而不是只留下“出现异常时提醒”的模糊描述。
下面使用一个脱敏后的价格监测场景进行说明。某团队需要每日采集多个电商平台的重点商品,用于竞品价格对比、促销跟踪和运营人员人工复核。项目第一阶段覆盖 8 个类目、约 2.4 万个商品实体,每日计划采集一次,促销期间对重点商品增加采集频率。
这里的数字是情景模拟数据,用于展示产品方案如何落地,不代表任何平台的公开统计。之所以采用这个规模,是因为它足以呈现批量采集中的分页、SKU、促销和异常处理问题,又不会掩盖规则细节。
如果团队使用九数云等数据分析工具承接后续分析,产品经理更应该提前把字段口径和数据层级定义清楚。分析工具可以帮助团队观察价格趋势、类目分布和异常波动,但不能替代采集端对原始字段含义的确认。九数云官网可作为后续数据分析与可视化环节的了解入口,但采集质量仍需在源头和入库环节完成治理。
案例中,平台商品 ID 用于识别平台商品,SKU ID 用于识别具体规格,内部标准商品 ID 用于跨平台归一化。一个平台商品可以对应多个 SKU,一个内部标准商品也可能对应多个平台商品,但这种映射必须有明确的维护规则。
建议在数据模型中至少保存以下字段:
| 字段 | 用途 | 校验方式 | 异常后动作 |
|---|---|---|---|
| 平台商品 ID | 识别平台商品实体 | 非空、同平台内稳定、可回链 | 缺失时阻断该记录 |
| SKU ID | 识别规格、价格和库存 | 同商品内不可重复,规格关系可追溯 | 缺失时根据业务决定隔离或降级 |
| 内部标准商品 ID | 跨平台比较和汇总 | 映射关系有来源和版本 | 映射不确定时进入人工复核 |
| 规格文本 | 解释 SKU 差异 | 保留原始文本,避免只保存标准值 | 格式异常时告警,不直接合并 |
案例中的业务方最初只提出“每天抓商品价格”。经过评审后,团队将价格拆成页面展示价、活动价、券后价、币种、价格单位和价格状态。对于无法确认价格类型的页面,系统不得直接把数值写入统一比较价。
统一比较价的计算过程必须可追溯。例如:
{
"display_price": 199.00,
"promotion_price": 179.00,
"coupon_price": 159.00,
"comparison_price": 179.00,
"price_type": "promotion_price",
"currency": "CNY",
"price_captured_at": "2026-09-13T10:30:00+08:00",
"rule_version": "price_rule_v3"
}
这个示例的关键不在 JSON 格式,而在于不要只留下一个 179 或 159。如果未来业务改变比较口径,保留原始价格和规则版本,才能重新计算历史数据;如果只保存最终价格,团队就必须重新访问历史页面,而历史页面通常已经变化或不可访问。
案例中可以将规则分为结构校验、业务校验和跨批次校验。结构校验处理字段是否存在,业务校验处理字段含义是否合理,跨批次校验处理整体趋势是否异常。
| 校验层 | 规则示例 | 检查频率 | 处理建议 |
|---|---|---|---|
| 结构校验 | 商品 ID 非空,价格为数值,采集时间格式统一 | 每条记录 | 核心字段失败则隔离记录 |
| 业务校验 | 价格不为负,活动价与状态匹配,SKU 与规格关系存在 | 每条记录 | 严重异常阻断,疑似异常告警 |
| 批次校验 | 总量、类目量、店铺量与历史基线比较 | 每个采集批次 | 整体异常时暂停下游发布 |
| 抽样校验 | 将记录与原页面逐项比对 | 每日或规则变更后 | 发现系统性偏差时回滚规则 |
静默错误是最值得产品经理重视的一类问题。它不会让程序报错,也不会让记录数归零,却会导致结果逐渐偏离真实情况。例如某平台更换页面结构后,价格节点仍然存在,但取到的都是划线价。
跨批次监控可以从以下角度发现问题:

案例中可以将每日抽样分成固定样本和风险样本。固定样本用于观察长期稳定性,风险样本用于覆盖高价商品、促销商品、近期规则异常商品、新接入店铺和多 SKU 商品。
一个可执行的起步方案是:
抽样结果要记录字段级结论,而不是只写“抽样通过”。建议记录原页面值、系统值、差异类型、是否影响业务、处理结果和规则版本。这样抽样才会从一次性验收变成持续的质量证据。
PRD 开头不要直接进入技术实现。先明确数据用于什么业务、覆盖哪些平台和类目、采集频率是什么、结果由谁使用,以及哪些数据不在本期范围内。
例如:
特别要写清“不直接驱动自动调价”这类边界。它会直接影响质量阈值、异常处理和上线策略。如果未来要接入自动决策系统,必须重新评估质量标准,不能默认沿用人工分析项目的规则。
| 字段名称 | 类型 | 业务定义 | 必填 | 校验规则 | 异常级别 |
|---|---|---|---|---|---|
| 平台商品 ID | 字符串 | 来源平台用于识别商品的唯一标识 | 是 | 非空、同平台稳定、可回链 | P0 |
| SKU ID | 字符串 | 具体规格对应的唯一标识 | 视商品结构而定 | 同商品内不重复、与规格关联 | P0/P1 |
| 统一比较价 | 数值 | 按照已确认口径转换后的比较价格 | 是 | 大于等于 0、来源类型明确、规则版本存在 | P0 |
| 商品状态 | 枚举 | 在售、无货、下架、未知等标准状态 | 是 | 枚举值固定,来源证据可追溯 | P1 |
| 采集时间 | 时间 | 实际完成来源数据采集的时间 | 是 | 时区统一,不晚于入库时间 | P0 |
| 原始价格文本 | 字符串 | 页面中被解析的原始价格内容 | 建议 | 保留原文,便于复核和规则升级 | P1 |
验收标准要能让产品、研发、数据和业务共同判断结果是否达标。可以按“上线前验收”和“运行中监控”分开写。
上线前验收:
运行中监控:
价格解析、状态识别和类目映射都会发生变化。如果系统只保存最新规则,后续很难解释历史数据为什么改变。建议为关键规则设置版本号,并在数据记录中保存使用的规则版本。
规则变更记录至少包含变更原因、影响范围、上线时间、测试样本、预期变化和回滚方式。产品经理不需要编写全部技术细节,但必须推动这些信息进入项目文档,否则每次页面变化都会变成临时救火。

如果只是单条商品缺少图片、卖点或非核心标签,可以保留记录并进入提示队列。但如果缺少商品 ID、采集时间或主价格,就不应直接进入业务主表。
建议动作是:
不要立刻认定平台页面减少了商品。先检查任务是否只采集到第一页、分页是否中断、访问是否被限制、筛选条件是否变化,以及是否误把状态未知的商品过滤掉。
如果下降集中在某一个平台或类目,优先查看页面模板和请求链路;如果所有平台同时下降,优先查看调度、网络、公共依赖和上游商品清单。问题定位顺序应从范围最小、证据最直接的环节开始。
整体变化可能是真实促销,也可能是解析口径变化。产品经理应同时对比促销状态、价格类型分布、原始价格文本和历史采集批次。如果所有商品都在同一时间以相似幅度变化,尤其要警惕字段节点变化或单位转换错误。
在没有完成抽样核对前,不建议直接把价格趋势发布给业务方。可以先将结果标记为“待确认”,或者只展示已通过质量校验的商品集合。
页面结构变化是抓取项目的常态,不应被当作偶发事故。处理时需要冻结受影响批次,保留变化前后的样本,并比较字段缺失率、值分布和页面截图。
修复后不能只验证一个商品。应覆盖不同商品卡片、详情页模板、促销状态和 SKU 结构,完成回归抽样后再恢复正常发布。
如果数据只供人工查看,少量低风险异常可以通过提示和人工复核处理;如果数据将驱动自动调价、库存补货或投放策略,质量方案必须升级。
自动决策场景通常需要:

全量覆盖听起来最理想,但在平台限制、页面变化和采集成本都存在的情况下,盲目追求全量可能降低整体稳定性。对于重点商品监测,可以优先保证核心商品、重点店铺和高风险类目的准确率,再逐步扩展覆盖范围。
如果业务的主要目标是发现价格趋势,稳定覆盖 80% 的重点商品可能比覆盖 100% 但质量波动很大的商品更有价值。产品经理应把“覆盖率”和“可用率”分开汇报,不能用覆盖率掩盖错误率。
整批阻断可以保护下游,但也可能因为少量异常导致业务无法使用。是否整批阻断,取决于异常范围、字段重要性和业务替代方案。
| 情况 | 建议动作 | 原因 |
|---|---|---|
| 核心主键整体解析失败 | 阻断整批 | 无法安全去重和关联,继续入库会污染主数据 |
| 单个店铺价格缺失 | 隔离该店铺,其他数据继续 | 异常范围明确,避免局部问题影响全局 |
| 少量非核心图片缺失 | 保留记录并提示 | 不影响主要价格分析,可在后续治理 |
| 所有商品价格口径不确定 | 暂停价格发布 | 错误结果比暂时没有结果更危险 |
| 采集延迟超过业务容忍时间 | 标记过期或降级使用 | 避免把旧数据当成实时数据 |
保存原始数据会增加存储和管理成本,但对解析规则迭代、异常复盘和争议处理非常有价值。我的建议不是无限保存所有内容,而是根据字段重要性设置分层留存。
数据留存还要考虑平台规则、权限、访问频率和使用范围。公开可见不等于可以无限制采集和长期保存,产品方案必须把合规边界放在技术可行性之前。
当项目只有少量商品、低频采集且主要供人工查看时,使用表格、抽样清单和基础告警也许足够。随着平台、商品和采集频率增加,人工核对会迅速失控,这时应投入自动化校验、异常队列和质量看板。
可以按照三个阶段推进:
不要一开始就建设复杂平台,却没有确定业务口径。自动化只能放大明确的规则,也会放大模糊的规则。先把最容易造成误判的价格、主键、状态和时间定义清楚,再决定工具投入。

质量看板不必一开始就做得复杂。对大多数入门项目,先展示以下指标就能发现大量问题:
这些指标应支持按平台、店铺、类目、采集任务和日期筛选。只看全量平均值会掩盖局部问题,例如某平台整体只占 10% 的数据量,但它可能承担了业务最重要的高端类目。
平均价格波动、平均缺失率和平均处理耗时都可能掩盖极端情况。一个平台的平均缺失率是 2%,并不代表每个店铺都稳定;有可能 90% 的店铺缺失率接近 0%,另有 10% 的店铺接近 20%。
因此,建议同时查看中位数、最大值、分位数和异常集中区域。对于价格监测,还可以观察同一商品连续多次采集的价格轨迹,而不是只看当天平均价格。
业务可用率可以定义为:在指定时间窗口内,同时满足核心字段完整、口径可解释、主键可关联且数据未过期的记录,占原始目标记录的比例。
这个指标不应直接作为跨项目排名工具,而应作为当前项目的运行参考。它能够帮助产品经理解释为什么原始采集 2.4 万条,最终可用于分析的是 2.16 万条,也能进一步追踪损耗发生在哪个环节。

不要先找工具,也不要先讨论页面解析技术。先召集业务、数据和研发确认商品主键、价格口径、状态枚举和采集时间。只要这四件事没有明确,后续所有完整率和准确率都缺乏判断基础。
把字段分成核心、重要和辅助三类。每个核心字段都要写清非空规则、格式规则、业务规则、异常等级和处理负责人。不要只写“发现异常后告警”,要写清楚是否阻断、是否重试、是否隔离和如何恢复。
样本不能只选正常商品。至少加入促销商品、多 SKU 商品、无货商品、下架商品、价格带小数的商品、标题较长的商品和页面结构不同的商品。每条样本都应有来源页面和人工确认结果。
很多阈值不能在项目开始时凭空确定。上线后的前两周,可以观察各平台、店铺和类目的正常数据分布,再调整批次波动、价格变化和缺失率的告警阈值。阈值应该随着业务和平台变化迭代,而不是永久写死。
同时,建议每周复盘一次异常:哪些是页面变化,哪些是规则错误,哪些是业务口径不清,哪些是可以通过自动化提前发现的问题。复盘结果要回写到字段字典、样本集和验收标准中。
电商数据抓取的专业性,不体现在抓取工具有多复杂,也不体现在每天入库了多少条记录,而体现在团队能否准确区分“有数据”“有正确数据”和“有可以支撑决策的数据”。
产品经理最应该建立的,不是一张永远追求 100% 的指标表,而是一套有业务边界的判断系统:核心字段出错时阻断,局部问题发生时隔离,低风险变化持续观察,所有关键结论都能回溯到来源、时间和规则版本。
如果你现在正准备启动一个电商数据抓取项目,下一步可以直接做三件事:先写出价格、主键、状态和时间的字段定义;再为每个核心字段指定校验动作和异常负责人;最后用 20 至 50 个包含促销、SKU、下架和无货场景的真实样本完成一次逐字段核对。
先把“什么是正确数据”说清楚,再讨论如何抓取;先让异常可被发现和解释,再追求更高的覆盖率。这通常比一开始投入更多采集任务、更多接口和更多报表,更能决定电商数据项目最终是否真正可用。
我刚接手一个商品采集项目时,团队一直盯着“任务是否成功”和“抓到了多少条数据”。但业务真正使用后,发现价格口径错了、部分 SKU 被合并,导致分析结果不能用。我想知道,产品经理应该怎样定义一套不只检查空值的质量校验目标?
我在参与一次商品价格监测项目时遇到过类似问题:采集任务显示成功,单批次记录数也达到预期,但业务抽查 100 条商品后,发现其中 17 条价格抓成了划线价,6 条把不同 SKU 合并成了一个商品。表面上看,任务成功率和记录数量都没有异常,实际上这批数据不能直接用于竞品分析。
因此,质量校验的起点不应是“抓到了多少”,而应是“这些数据能不能支持下一步决策”。产品经理至少要把质量目标拆成四类:完整性、准确性、一致性和时效性。
质量目标要回答的问题典型检查动作业务风险 完整性关键字段是否缺失,是否漏掉整批数据必填字段非空、批次量对比、缺失率统计商品无法入库或样本偏差 准确性字段值和页面真实含义是否一致原页面抽样核对、逻辑关系校验价格、销量分析误判 一致性不同批次、平台和类目的口径是否统一单位、枚举、主键和格式标准化数据无法横向比较 时效性数据是否在业务允许的时间内更新采集时间、入库时间、过期时间检查监控结果滞后或失真 其中最容易被忽略的是准确性。
字段不为空,不代表字段抓对了;商品有价格,不代表这个价格就是业务要比较的价格。产品经理应优先识别会改变决策结论的字段,例如商品 ID、SKU、页面售价、活动价、库存状态和采集时间,并为这些字段设置更严格的校验等级。
我的判断标准是:如果某个字段错误会让业务做出相反决策,它就不应只依赖抽样检查,而应配置自动规则、异常告警和人工复核三道保障。质量校验不是技术团队的附加工作,而是产品经理对“什么数据算正确”的明确承诺。
我原本以为“商品价格”“月销量”“商品 ID”都是非常明确的字段,直接写进需求就可以了。后来发现不同平台的展示方式完全不同,我想知道产品经理在抓取前到底要把哪些业务口径定义清楚,才能避免研发抓到了数据、业务却说数据不对?
电商采集项目最常见的返工,并不是解析程序写错,而是需求里的字段名称过于模糊。例如“商品价格”可能指页面标价、活动价、会员价、券后价或含运费到手价;“销量”可能是累计已售、近 30 天销量,也可能只是页面上的区间描述。
我在一个价格监测项目中见过这样的情况:研发按照页面最醒目的数字抓取,业务却要求使用活动页实际成交价。双方都认为自己理解正确,最后只能重新补字段、重跑历史数据,项目上线时间被迫延后。这个问题本质上不是开发质量问题,而是字段口径没有在需求阶段落地。
建议产品经理在 PRD 中为每个关键字段增加“业务定义”和“来源位置”,不要只写字段名和数据类型。字段不能只写成建议明确为 商品主键商品 ID平台商品 ID;SKU 是否单独建档;改名后是否保持原主键 价格商品价格页面售价、促销价、券后价分别存储,是否含运费 销量销量累计销量或时间窗口销量;
区间值如何标准化 库存库存数量精确库存、库存区间、仅判断有货,未展示时记什么值 时间更新时间页面采集时间、任务完成时间、数据入库时间分别记录 商品主键尤其需要谨慎。SPU 代表一个商品款式,SKU 代表具体规格,平台商品 ID 还可能是平台内部展示层级的标识。
若把它们混成一个字段,后续就会出现同款不同规格被覆盖、价格被错误汇总、销量重复计算等问题。我通常会要求产品在开发前拿 10 到 20 个真实样本做“字段口径会签”:产品、运营、数据和研发一起对照来源页面逐字段确认。这个动作看起来慢,但比上线后发现价格口径错误再重做数据清洗成本低得多。
经验上,字段定义表不是文档装饰,而是后续开发、测试、验收争议时唯一可靠的判断依据。
我不太确定异常处理是不是越严格越好。比如价格为空,肯定应该拦截;但图片缺失、销量突然上涨,是否也要阻断整批数据?我希望知道产品经理怎样设置阻断、告警和人工复核的边界,避免规则过严导致数据用不了,也避免规则过松放过严重错误。
校验规则不能简单理解为“发现异常就全部阻断”。我在实际项目中踩过一个坑:团队把非核心图片字段为空也设置成整批阻断,结果某个平台图片域名短暂异常时,价格和商品状态等核心数据也无法按时产出。规则看似严格,实际上损害了业务连续性。更稳妥的做法,是按照异常对业务决策的影响分级,而不是按照字段是否为空分级。
一个字段是否重要,取决于它出错后会不会让下游产生错误结论。
处理级别适用异常产品动作示例 阻断型核心身份、核心数值或来源可信度失效暂停入库或暂停下游使用,立即通知负责人商品 ID 大量为空、价格解析整体偏移、数据来源无法确认 高优先级告警局部异常但仍可保留部分数据进入异常队列,自动重试或人工复核某类目缺失率明显上升、采集量较历史均值大幅下降 提示型低风险、非核心字段的小比例异常记录、统计、定期复盘,不阻断主流程少量图片缺失、个别标题长度异常 自动规则建议覆盖四类检查:结构检查、范围检查、逻辑检查和跨批次波动检查。
结构检查解决“有没有”和“类型对不对”;范围检查解决“值是否离谱”;逻辑检查解决“字段之间是否矛盾”;跨批次检查解决“系统是否突然失去了一部分数据”。例如,价格大于等于零只是最低限度的范围规则,还可以增加“活动价不应长期高于页面售价”“同一商品短时间内价格整体上涨 20 倍时触发复核”等逻辑。
但不要直接照搬固定阈值,应该先用历史数据观察正常波动,再设置业务可接受范围。促销日、直播场景和日常销售的阈值可能完全不同。我建议产品经理在每条规则后面补三个字段:异常等级、处理责任人、是否允许降级使用。只有把“发现异常后怎么办”写清楚,质量校验才算真正闭环;
否则系统只是不断制造告警,却没人知道哪些告警需要行动。
以前我验收采集项目,主要看任务是否成功、数据量是否达到预期,偶尔抽几条记录对照页面。但我担心这种方式会漏掉批量错配、历史数据过期和重复入库等问题。有没有一套适合产品经理的上线前检查顺序和可执行的验收标准?
只看任务成功率和记录数,是电商数据项目里最危险的验收方式之一。我参与过一次采集验收,任务成功率达到 100%,记录量也比上一周增加了 8%,但抽查后发现翻页逻辑发生偏移,后半页数据重复率接近 30%。如果只看总量,重复数据反而可能让结果看起来“更充足”。
产品经理可以把验收拆成四道门:口径确认、规则验证、样本核对和运行监控。四道门分别解决“定义是否清楚、系统是否按定义执行、结果是否真实、上线后能否持续发现问题”。
验收阶段必查内容通过依据常见遗漏 口径确认主键、价格、销量、状态、时间字段业务和研发对字段定义达成一致把券后价和页面价混为一谈 规则验证非空、类型、范围、唯一性、逻辑关系异常样本能被识别并按等级处理只测试正常页面,不测缺字段页面 样本核对不同平台、类目、价格类型和 SKU来源页面与入库结果逐字段可追溯只抽普通商品,不抽促销和多规格商品 运行监控任务状态、数据量、延迟、缺失率、告警异常有人接收、有人处理、能追踪关闭有告警但没有责任人和处理时限 抽样不能只抽“随机商品”。
我更建议采用分层抽样:普通商品、高销量商品、促销商品、多 SKU 商品、新接入平台和历史上出现过异常的店铺都要覆盖。比如验收 100 条时,可以安排 50 条随机样本、20 条高价值商品、20 条促销或多规格商品、10 条异常恢复样本,这比单纯随机更容易发现业务风险。
验收标准也不要只写“数据准确率 99%”。更有用的写法是:商品主键不得为空且单批次不重复;核心价格字段必须能追溯到来源页面;异常记录必须保留错误原因和采集时间;任务失败或数据量异常时必须触发通知;下游使用前必须能够识别数据是否过期。上线后还要做一次回归验收。
重点不是重新证明系统能抓数据,而是确认页面结构变化、规则调整或重试机制不会引入重复、错配和历史覆盖。对产品经理来说,真正的上线标准不是“今天跑通了”,而是“下周出现异常时,我们知道它何时发生、影响了什么、谁负责处理,以及哪些数据仍然可以安全使用”。


读者评论
文章把“任务成功”和“数据可用”区分开来,这一点很实用。尤其是价格口径、SKU合并和商品状态误判,确实比单纯的任务报错更容易被忽略。
从产品经理角度看,先定义字段含义、业务主键和异常动作,再让研发实现,能减少后续反复沟通。文中对SPU、SKU和平台商品ID的区分也比较清楚。
保留原始数据、清洗数据和异常记录的建议值得借鉴。直接删除异常虽然能让报表更整齐,但会损失追溯依据,后续排查和补数都会更困难。
文章对质量指标的分层较完整,不过实际项目中还需要结合平台限制、抽样成本和业务时效,逐步确定阈值,不能简单照搬示例数据。