电商数据抓取:产品经理从数据到行动:用数据清洗实现降低清洗成本
电商数据抓取项目最容易被低估的成本,通常不是接口调用、页面解析或数据入库,而是数据交付之后不断发生的人工返工:同一商品被识别成多个商品,原价、券后价和活动价混在一起,销量单位不一致,店铺名称无法统一,业务人员每天拿着表格重新解释字段。我的判断是,抓到数据只是完成了数据项目的前半段,真正决定项目价值的是清洗后的数据能不能稳定支持一个具体行动,例如调价、选品、竞品监控或活动复盘。
本文不把重点放在“如何写一个爬虫”上,而是从产品经理的视角,拆解电商数据从抓取、清洗、校验到业务使用的完整链路。文中涉及的成本和案例数据,除特别说明外,均为项目评估模板或情景模拟数据,不代表行业平均水平。对于需要快速搭建数据看板、字段模型和分析流程的团队,可以结合九数云的公开产品能力进行验证,官网地址为:https://www.jiushuyun.com。
很多团队把数据清洗定义为技术或分析人员的后置工作:先把所有能抓到的字段保存下来,等业务真正需要时再处理。这个顺序看似灵活,实际会把不确定性全部推迟到交付阶段。到了分析阶段,产品、运营和技术往往才开始讨论“价格到底取哪个”“同款商品如何判断”“销量单位是否可以直接比较”。
如果一个字段的业务含义没有在采集前确定,后续每次报表更新都可能重新解释一次。换句话说,清洗成本并不只发生在清洗动作中,也发生在字段争议、数据返工、错误决策和沟通等待中。
我在设计电商数据需求时,会先问三个问题:这批数据最后要推动什么动作?动作需要哪些字段?如果字段缺失,业务是暂停、降级,还是允许人工补录?如果这三个问题没有答案,直接开始抓取往往只是在扩大后续问题的规模。
一批包含十万条商品记录的数据,不一定比一批经过主键统一、字段口径稳定、更新时间清晰的两万条数据更有价值。数据量只能说明采集规模,不能说明数据是否可以被比较、追踪和复用。
我通常把数据可用性拆成五个维度:完整性、唯一性、一致性、及时性和可追溯性。完整性回答“关键字段是否存在”;唯一性回答“是否重复统计”;一致性回答“不同来源的字段能否比较”;及时性回答“数据是否仍然支持当前决策”;可追溯性回答“这个结果是从哪里、在什么时候、按哪一版规则计算出来的”。
| 数据质量维度 | 需要回答的问题 | 常见业务后果 | 产品经理应定义的指标 |
|---|---|---|---|
| 完整性 | 商品标识、价格、采集时间是否存在 | 无法比较或无法追溯 | 关键字段完整率 |
| 唯一性 | 同一商品是否被重复计算 | 销量、商品数和市场规模被高估 | 重复记录率、主键匹配率 |
| 一致性 | 不同平台的价格、销量口径是否可比 | 竞品排序和价格判断失真 | 口径一致率、单位转换成功率 |
| 及时性 | 数据更新时间是否满足业务节奏 | 错过调价、补货或活动窗口 | 按时更新率、数据延迟时长 |
| 可追溯性 | 结果是否能回到原始来源和规则版本 | 出现异常后无法解释或复盘 | 来源记录率、规则版本覆盖率 |

如果商品价格一开始就被拆分为原价、促销价、优惠券金额和到手价,后续只需要按业务口径计算;如果采集时保留平台商品 ID、店铺 ID、SKU 和采集时间,后续去重和历史追踪就有基础;如果缺失值被标记为“未展示”“采集失败”和“不适用”,分析人员就不会把三种不同状态误认为同一种空白。
相反,如果所有数据都被保存成一个“价格”字段,一个“销量”字段和一个“商品名称”字段,后续清洗就不再是简单格式处理,而是重新猜测原始业务含义。前置定义规则,本质上是在减少未来需要做出的判断数量。
在电商分析项目中,“商品”并不是一个足够精确的对象。一个商品链接可能对应一个平台商品 ID,一个平台商品下又包含多个 SKU;同一款商品可能同时出现在多个店铺、多个平台和多个活动页面中。业务人员说“统计这个商品的价格”,技术人员却可能不知道他说的是 SPU 价格、最低 SKU 价格、主推规格价格,还是某个时间点的券后价格。
我建议在需求文档中至少区分平台、店铺、SPU、SKU、商品链接和采集记录。它们之间不是简单的一对一关系,而是不同层级的业务对象。若没有层级关系,产品经理很容易把“同款商品”和“同一条记录”混为一谈。
| 对象 | 解决的问题 | 适合用于什么分析 | 错误处理的后果 |
|---|---|---|---|
| 平台 | 区分来源渠道和平台规则 | 渠道对比、平台覆盖率 | 不同平台数据口径被混合 |
| 店铺 | 识别经营主体和店铺变化 | 竞品店铺监控、店铺上新 | 同一品牌的不同店铺被错误合并 |
| SPU | 识别商品款式或产品族 | 商品覆盖、款式分析 | 多个规格被当成多个商品 |
| SKU | 识别具体规格组合 | 价格比较、库存和规格分析 | 不同容量或颜色的价格被直接比较 |
| 采集记录 | 记录某一时间点的观测结果 | 价格变化、活动周期、历史追踪 | 历史变化被覆盖,无法判断趋势 |
在实际数据表中,价格往往不止一个。页面可能同时出现划线价、当前售价、会员价、券后价、满减后的估算价和不同 SKU 的起售价。若产品经理只提出“抓取商品价格”,最终数据表中可能出现一个数值,却没人知道这个数值代表什么。
我通常要求把价格拆成原始观测字段和标准业务字段。原始字段保留页面看到的文本或数值,标准字段则根据预先定义的规则计算。例如,竞品公开价格监测可以使用“当前展示售价”,而内部促销复盘可能需要单独计算“活动后实际支付价”。这两个字段都合理,但不能混成同一个指标。
销量可能是累计销量、近三十天销量、月销展示值或平台根据区间折算的数量。评价数量同样可能包含历史评价、追加评价或不同规格评价。库存则可能是实时库存、可售库存,也可能只是页面是否显示缺货。
这些字段的共同问题是:它们看起来都是数字,但数字背后的统计周期和计算方式不同。产品经理若只定义字段名称,不定义统计口径,后续排序、趋势和同比都会建立在不稳定的基础上。
下面以一个情景模拟的竞品价格监测项目为例。团队每天采集约八千条商品记录,第一版数据表只有商品名称、店铺名称、价格、销量和链接六个字段。表面上字段不多,交付后却出现了四类问题。
团队原本预计每天花费一小时核对数据,实际需要三名人员合计约五小时才能完成。这里的五小时并不是复杂算法造成的,而是人员需要反复判断“这是不是同一个商品”“这个价格能不能比较”“这条变化是不是采集错误”。

扩大采集范围可以增加信息覆盖,但也会同步增加字段差异、异常类型和规则维护成本。特别是跨平台抓取时,平台页面结构、字段展示方式、价格口径和商品标识都可能不同。没有数据标准的情况下,采集量越大,后续统一处理的难度越高。
我更倾向于先做一个小范围闭环:选择一个类目、两到三个数据源和一组明确的业务动作,验证从采集到使用是否连通。只有当字段定义、主键规则和质量验收稳定后,才适合扩大范围。
重复记录和重复商品不是同一个概念。同一商品在不同日期的采集记录,可能是价格趋势分析所需要的历史数据;同一款商品在不同店铺的记录,可能是竞品渠道比较所需要的横向数据;同一 SPU 下的不同 SKU,则可能决定价格区间和库存结构。
正确的做法不是“看到重复就删除”,而是先明确分析粒度。以价格监测为例,可以使用“平台、店铺、SKU、采集时间”作为观测记录主键;以商品覆盖分析为例,则可能需要将多个 SKU 汇总到 SPU 层级。去重规则必须服务于分析目标,而不是服务于表格看起来更干净。
零代表一个明确的业务事实,例如销量为零、库存为零或优惠金额为零。空值则可能代表平台没有展示、抓取失败、字段不适用或数据尚未更新。把空值全部填成零,会把未知状态伪装成确定状态。
在数据模型中,我建议至少增加一个字段状态,例如“正常采集”“页面未展示”“采集失败”“业务不适用”和“待人工确认”。数值字段保存数值,状态字段保存解释,后续分析才能知道哪些记录可以进入统计,哪些记录需要排除或复核。
商品标题可以帮助人工理解商品,但不适合直接承担唯一身份识别。标题可能随着活动变化,也可能加入“新款”“爆款”“限时优惠”等营销词;同一商品在不同店铺的标题写法也可能不同;同一标题还可能对应不同规格。
更稳妥的做法是优先使用平台商品 ID、SKU ID、店铺 ID 等稳定标识。如果确实缺少稳定标识,再使用品牌、品类、关键规格、容量、型号等字段组合进行候选匹配,并把低置信度记录放入人工复核池,而不是直接自动合并。
一套规则如果能快速处理数据,却无法解释为什么这样处理,短期看似高效,长期会形成新的维护成本。业务人员会不断追问“为什么这个商品被合并”“为什么这条价格没有进入报表”,技术人员则需要重新查脚本和临时逻辑。
我会要求每一条关键清洗规则都能用一句业务语言解释。例如:“如果平台商品 ID 和 SKU ID 相同,则视为同一规格的不同采集记录”“如果促销价缺失,则不自动用原价替代到手价”。规则越容易被业务理解,后续协作成本越低。

数据需求不要从“我要哪些字段”开始,而应从“数据变化后,谁会做什么”开始。比如,竞品价格下降是否会触发调价评估?某类目上新数量增加是否会触发选品复盘?某店铺连续三天增加促销商品是否会触发运营人员关注?不同动作需要的数据深度并不相同。
| 业务动作 | 最低必要字段 | 需要保留的历史信息 | 不建议直接使用的字段 |
|---|---|---|---|
| 竞品价格监测 | 平台、店铺、商品标识、SKU、当前展示售价、采集时间 | 连续采集记录、价格变化、活动状态 | 未说明口径的“商品价格” |
| 选品分析 | 类目、商品、规格、价格区间、销量口径、评价数量 | 周期变化、上新时间、类目排名 | 无法确认统计周期的销量 |
| 店铺监控 | 店铺标识、商品数量、上新记录、价格区间 | 店铺历史快照、商品上下架变化 | 仅依赖店铺名称的归并结果 |
| 活动复盘 | 活动前价格、活动期间价格、优惠方式、采集时间 | 活动前后完整时间窗口 | 把促销价直接当作日常售价 |
主键不是技术人员独有的概念,它决定产品经理最终看到的每一条数据代表什么。一个合理的主键应该能够区分业务对象和观测时间。例如,价格监控记录可以考虑使用“平台商品标识、SKU 标识、采集时间”组合;如果需要比较不同店铺,则还应包含店铺标识。
主键设计还要考虑历史数据是否保留。很多团队把同一商品当天的新数据覆盖掉旧数据,导致数据表看起来整齐,却失去了趋势信息。对价格、销量和库存这类会变化的字段,建议将每次采集视为一个新的观测记录,而不是覆盖原始记录。
字段字典不能只列出字段名称和备注。真正有用的字段字典,还应说明数据类型、取值范围、来源位置、清洗方法、缺失状态、更新频率和责任人。字段定义越具体,技术实现和验收越容易对齐。
| 字段名 | 业务定义 | 数据类型 | 清洗规则 | 异常处理 |
|---|---|---|---|---|
| 展示售价 | 页面当前展示的标准售价,不等同于券后价 | 数值,保留两位小数 | 去除货币符号和千分位,统一币种 | 空值标记为未展示,不自动补原价 |
| 优惠后价格 | 按明确优惠规则计算的价格 | 数值,可为空 | 仅在优惠条件和金额均明确时计算 | 规则不完整时进入待确认状态 |
| 商品标识 | 平台用于识别商品的稳定 ID | 文本 | 去除前后空格,不做数值转换 | 缺失时不得直接按标题合并 |
| 采集时间 | 数据被实际获取的时间 | 时间戳 | 统一时区和格式 | 缺失记录不得进入趋势分析 |
| 销量口径 | 说明销量对应的周期或展示方式 | 枚举值 | 将累计、近三十天、月销等分类保存 | 无法识别口径时标记为未知 |
不是所有数据都值得自动处理,也不是所有异常都需要人工介入。将规则分成三层,可以在效率和准确性之间取得更好的平衡。
这样做的好处是,人工精力会集中在真正需要业务判断的边界样本,而不是被大量机械问题消耗。产品经理需要明确的是哪些问题可以接受自动化误差,哪些问题一旦错误就会影响决策。
我不建议用一个笼统的“数据合格”标签覆盖所有用途。竞品价格看板、选品分析和管理层趋势报告的质量要求可能不同。可以建立分层阈值,例如核心价格监测要求商品标识、SKU 和采集时间完整,探索性选品则允许部分商品标识缺失,但必须标记不确定性。
在需求验收中,至少要定义关键字段完整率、重复率、异常率和数据延迟。目标值应通过一到两周的实际采样确定,不宜一开始就套用固定行业标准。

下面使用一个情景模拟案例,模拟某消费品团队对三个平台的同类商品进行价格监测。团队每天需要观察约一万条商品记录,最终目标不是生成一张商品清单,而是回答三个问题:主要竞品是否在降价?降价发生在哪些规格?自身商品是否需要进入调价评估?
项目第一版的字段包括商品名称、店铺名称、商品链接、价格、销量和抓取时间。经过三天试运行后,团队发现结果不能直接用于调价,原因包括:一款商品有多个规格但只保留了最低价格,券后价和页面售价混在一起,部分商品在不同平台使用不同标题,店铺名称存在多个写法,历史记录也没有稳定关联。
产品经理将“价格”拆分成四个字段:页面展示售价、活动售价、优惠券金额和计算后的参考到手价。参考到手价只有在优惠条件明确时才计算;如果优惠券需要满足满减门槛,且当前数据无法确认用户是否满足条件,则不把它直接折算到手价。
同时,团队把“商品”拆成 SPU 和 SKU 两层。SPU 用于看款式覆盖和竞品数量,SKU 用于比较具体规格价格。这样一来,500 毫升装和 1 升装不会被放到同一价格排序中,最低价也不会被误认为整个商品的代表价格。
该项目采用以下逻辑字段:平台标识、店铺标识、平台商品 ID、SKU 标识、SPU 匹配 ID、原始标题、标准标题、规格文本、展示售价、活动售价、优惠券金额、参考到手价、销量数值、销量口径、采集时间、规则版本和异常状态。
其中,平台商品 ID 和 SKU 标识用于优先匹配;缺少稳定标识的商品不直接合并,而是使用品牌、类别、规格和关键型号生成候选匹配。匹配分数较高的记录自动关联,中间区间进入人工复核,明显不一致的记录保留为独立商品。
如果当前售价小于零,直接标记为无效;如果活动售价高于展示售价,不直接删除,而是标记为口径冲突,等待确认页面字段含义;如果价格在相邻采集周期内出现异常跳变,则触发复核,但不立即判定为错误,因为大促期间价格确实可能发生明显变化。
销量字段先拆分数值和口径。例如,“近30天销量”“累计销量”和“月销”不能只保存成一个数值。对于包含“万”的展示值,统一换算为数值,但同时保留原始文本,避免因为四舍五入造成误解。
商品标题只用于辅助匹配,不作为唯一条件。标题中的促销词、赠品词和营销词会被单独识别;颜色、容量、数量和型号则进入规格字段。对同款不同规格,系统保留 SKU 层记录,并根据业务需要汇总到 SPU 层。
如果团队已经有多来源数据,产品经理可以使用九数云这类数据分析工具,将表格、数据库或业务系统数据统一接入后,再按字段模型进行清洗、关联和可视化。这里需要强调,工具不能替代字段定义和业务口径;它更适合帮助团队减少重复导入、手工合并、临时计算和看板维护。
在这个模拟案例中,数据处理可以分为四层:原始数据层保留各平台原始记录;标准化层统一字段名称、时间和价格格式;业务模型层建立商品、店铺、规格和价格变化关系;应用层输出竞品价格看板、异常商品清单和调价候选列表。
与每天下载表格、复制粘贴和手工筛选相比,数据分析平台的价值不只是生成图表,更重要的是把字段关系和计算逻辑沉淀下来。只要数据源结构和规则保持稳定,团队可以减少每次更新时重新整理表格的工作。
清洗完成后,团队没有只展示“平均价格变化”,而是设计了三个行动视图。第一个视图展示同一 SPU 下不同 SKU 的价格区间,用于识别价格结构变化;第二个视图展示竞品在连续采集周期中的降价记录,用于区分单次异常和持续性动作;第三个视图展示需要人工确认的记录,避免异常被隐藏在平均数中。
| 分析视图 | 核心筛选条件 | 输出结果 | 对应行动 |
|---|---|---|---|
| 规格价格区间 | 同 SPU、同规格单位、同一采集周期 | 最低价、中位价、最高价和价格分布 | 判断自身商品所在价格位置 |
| 竞品降价追踪 | 同 SKU 或高置信度同款、连续两个周期以上 | 降价幅度、持续时间、活动状态 | 触发调价评估或活动分析 |
| 异常复核列表 | 价格跳变、缺失标识、口径冲突 | 异常原因、来源链接和处理状态 | 由运营或数据负责人确认 |
| 店铺竞争变化 | 店铺标识统一、商品历史记录完整 | 上新、下架、促销商品数量变化 | 调整竞品跟踪范围 |

第一部分是人工处理成本,包括复制、粘贴、格式修正、去重、核对和异常确认。它最容易被看见,也最容易被低估,因为很多团队把运营人员和产品经理的零散时间当成了“顺手处理”。
第二部分是技术维护成本,包括规则脚本、数据接口、字段映射、任务调度和异常告警的维护。数据源发生一次字段变化,技术人员可能需要重新调整解析逻辑和测试流程。
第三部分是返工成本。字段口径变更、主键规则调整或业务临时增加维度时,历史数据可能需要重新清洗。若没有保留原始数据和规则版本,返工就会变成重新抓取或手工补录。
第四部分是沟通成本。产品、技术、运营和管理人员反复确认“这个数字是什么意思”,虽然不会直接出现在财务报表里,却会拖慢数据交付和决策节奏。
第五部分是业务延迟成本。当竞品价格变化、库存变化或活动变化没有及时进入业务流程时,团队可能错过调价、补货或活动调整窗口。这个成本不一定能精确计价,但不应被忽略。
可以使用下面的简化模型进行项目评估:
月度清洗成本 = 人工处理时长 × 人力时薪 + 技术维护时长 × 技术时薪 + 返工时长 × 综合人力成本 + 业务延迟造成的可估算损失
如果无法准确估算业务延迟损失,可以先不将其纳入总金额,但要单独记录延迟次数、影响范围和错过的业务节点。模型的目的不是制造一个精确到个位数的结论,而是让团队比较不同方案时有统一口径。
假设某团队每月处理十二万条商品记录,当前人工清洗和核对约需九十小时。团队考虑三种方案:继续使用表格手工处理;使用脚本完成部分格式清洗;引入数据分析平台统一接入、建模和看板。以下数据为情景模拟,用于展示评估方式。
| 方案 | 每月人工处理时长 | 技术维护时长 | 初始投入 | 主要优点 | 主要限制 |
|---|---|---|---|---|---|
| 继续手工表格 | 90小时 | 5小时 | 低 | 上手快,适合临时小批量任务 | 规则难复用,容易产生版本混乱 |
| 脚本部分自动化 | 42小时 | 24小时 | 中 | 格式转换和批量处理效率较高 | 依赖开发维护,业务人员修改规则不够灵活 |
| 数据分析平台建模 | 28小时 | 12小时 | 中高 | 适合多来源接入、可视化和协作复用 | 前期需要设计数据模型和权限流程 |
这个比较不能简单得出“平台一定最好”的结论。如果项目只有一次性分析,使用表格可能已经足够;如果数据每周更新、涉及多个团队和多个来源,规则沉淀与协作复用的价值才会逐渐显现。

如果团队只看“清洗时间从九十小时降到二十八小时”,可能会忽略数据质量、维护难度和业务覆盖范围。更完整的评估至少要同时观察四项结果:人工时长下降多少、关键字段完整率是否提高、可复用报表数量是否增加、异常被发现的时间是否提前。
我会把上线前后对比周期设置为两到四周,并保持数据规模和更新频率尽量接近。若只拿最混乱的一周和最顺利的一周比较,容易得到不可靠的效率结论。
一次性市场调研、少量竞品采样或每月更新一次的商品分析,不必一开始就搭建复杂的数据平台。此时最重要的是建立字段字典、保留原始记录、标记来源和写清清洗规则。
这个阶段的目标不是自动化程度最高,而是让团队第一次完成的数据处理能够被第二次复用。
日更项目最容易出现“每天都在做同样的事情”。如果每次更新都需要重新下载、复制、合并和筛选,说明数据流程还没有被产品化。此时应优先建设增量更新、主键关联、异常记录和质量看板。
日更场景中,异常处理的目标不是把异常全部消灭,而是让异常能够被快速定位、分级和关闭。
多平台数据最危险的做法是直接合并后进行排名。平台之间可能使用不同的商品 ID、销量展示方式、价格展示方式和活动规则。即使字段名称相同,也不代表字段含义一致。
建议为每个平台建立来源映射表,记录原始字段名称、标准字段名称、转换方式和不适用状态。对于无法统一的字段,不要强行转换成一个数字,可以保留平台来源和口径标签,分平台展示。
“实时抓取”经常被当成项目目标,但实时本身不是业务价值。调价系统、库存预警和活动监控可能需要较高更新频率;月度选品分析则未必需要。高频更新会带来更高的访问、存储、接口和异常维护成本。
我建议把更新频率与业务响应窗口绑定。例如,如果运营人员需要在两小时内确认竞品价格变化,就设计满足两小时响应的采集和处理机制,而不是盲目追求分钟级更新。
没有专职开发人员时,单纯依赖脚本可能会出现“能跑但没人敢改”的问题。团队可以考虑使用数据分析平台完成数据接入、字段管理、计算逻辑和看板配置,让业务人员在规则允许的范围内完成调整。
以九数云这类工具为例,适合先验证多来源数据接入、数据关联、指标计算和看板协作是否能减少重复整理。实际选型时,应重点考察数据源支持、权限管理、规则可追溯性、异常处理能力和团队学习成本,而不是只看图表数量。
电商抓取并不意味着任何公开可见信息都可以无限制采集、存储和使用。团队需要核对数据来源、平台规则、接口授权范围、访问频率和使用目的。涉及用户昵称、联系方式、收货信息等个人信息时,应尽量不采集;确有必要时,需要进一步评估合法性、必要性和安全管理要求。
文章或项目方案不应以绕过验证、规避访问限制或突破权限为目标。更稳妥的方式是优先使用官方接口、授权数据源或符合平台规则的公开数据,并控制访问频率和数据留存范围。

表格最大的优点是灵活,业务人员可以快速修改字段、筛选记录和添加备注。它适合一次性分析、少量数据和规则仍在探索的项目。但表格的问题也很明确:版本容易分叉,公式难以追踪,协作时常常出现重复文件,历史数据和原始数据也不容易分层保存。
自动化处理适合更新频率高、数据量大、清洗规则稳定的项目。它可以减少重复劳动,但前期需要投入规则设计、测试、监控和维护。对于规则尚未稳定的项目,过早自动化可能把错误固化,后续修改成本反而更高。
自建脚本通常在特定任务上具有较高的灵活性,尤其适合复杂解析、定制化匹配和有成熟开发团队的组织。但脚本的长期成本不只包括开发,还包括部署、权限、日志、异常告警、版本管理和人员交接。
数据分析平台更适合需要多来源接入、业务协作、可视化分析和持续看板的团队。它的优势在于把数据流程和业务使用放在同一环境中,但平台不能自动解决商品主键、字段口径和业务规则问题。若前期模型设计不足,换成平台后依然会得到一张结构混乱的数据表。
全量重算的优点是逻辑简单,数据状态更容易统一;缺点是数据量增长后处理时间、资源消耗和失败重试成本都会增加。增量更新可以降低重复处理,但需要稳定的时间字段、主键和变更识别逻辑。
如果源数据经常发生历史修正,不能只依赖增量更新。可以采用“日常增量加周期性全量校验”的方式:日常处理新增和变化记录,每周或每月重新核对关键范围,避免历史异常长期存在。
全自动匹配的速度快,但对同款不同规格、标题变化和平台差异较敏感。完全依赖人工则成本高、速度慢,而且不同人员的判断标准可能不一致。
更适合多数项目的是分层匹配:高置信度记录自动通过,中间置信度记录进入人工复核,低置信度记录保留独立状态。人工复核的结果还要回写到映射表,让下一批数据可以复用,而不是每次重新判断。
| 决策对象 | 偏自动化的适用条件 | 偏人工处理的适用条件 | 建议保留的控制点 |
|---|---|---|---|
| 字段格式转换 | 规则明确、输入格式稳定 | 来源格式频繁变化 | 保留原始字段和转换日志 |
| 商品去重 | 有稳定商品 ID 和 SKU | 主要依赖标题和模糊匹配 | 保留匹配置信度和复核状态 |
| 价格计算 | 优惠条件和金额完整 | 活动门槛、会员条件不明确 | 拆分原始价格和标准价格 |
| 异常判断 | 范围和阈值稳定 | 大促期间波动频繁 | 异常只触发复核,不直接删除 |
| 类目归属 | 平台类目结构稳定 | 业务类目与平台类目差异较大 | 保留平台类目和标准类目两个字段 |

第一周不急着扩展数据源,而是确定一个业务动作和一组最小字段。建议选择一个清晰场景,例如竞品价格监测或某个类目的选品分析,写清楚谁使用结果、多久使用一次、看到什么变化后会采取什么行动。
同时建立对象关系:平台、店铺、SPU、SKU、商品链接和采集记录分别是什么。对每个字段定义来源、类型、必填状态和缺失处理方式。第一周的产出应是一份字段字典和数据质量验收表,而不是一张看起来很大的数据表。
原始层只负责保存来源数据,不做不可逆覆盖;标准层负责统一字段、格式和口径;异常层负责保存缺失、冲突、跳变和低置信度匹配记录。三层分离后,业务人员可以查看结果,技术人员也能追溯原始来源。
这一周需要完成一批小样本验证。不要直接用十万条数据测试,先选取包含正常记录、缺失记录、多规格商品、促销商品和失效链接的样本。样本应覆盖最容易出错的边界情况。
将基础规则自动化,例如价格格式、时间格式、必填字段、重复主键和数值范围检查。对于商品匹配、类目归属和活动口径等复杂问题,建立人工复核队列,并记录处理结果和判断依据。
人工复核不是项目失败的标志,而是把不确定性显式化。关键在于复核结果能否沉淀为映射规则或历史判断,避免下一次更新又从头开始。
看板不应只展示商品数量和平均价格,还应展示数据质量状态和行动入口。建议至少增加关键字段完整率、待复核记录数、异常价格数量、数据更新时间、主键匹配率和规则版本。
如果使用九数云等数据分析工具搭建看板,可以将清洗结果和业务指标放在同一分析环境中,让运营人员不仅看到“竞品降价了多少”,还可以看到这条结论基于多少条有效记录、哪些记录被排除、是否存在待复核异常。
下面的示例使用伪 SQL 表达产品经理可以写进需求文档的检查逻辑。它不是针对某个平台的抓取代码,也不涉及绕过访问限制,重点是说明数据进入分析前应如何被验证。
SELECT
platform_id,
shop_id,
product_id,
sku_id,
collected_at,
display_price,
activity_price,
CASE
WHEN product_id IS NULL THEN '缺少商品标识'
WHEN collected_at IS NULL THEN '缺少采集时间'
WHEN display_price display_price THEN '价格口径冲突'
ELSE '通过基础校验'
END AS quality_status
FROM raw_product_records
WHERE source_status = '采集成功';在正式项目中,这类规则还需要结合平台来源、商品层级、优惠条件和业务口径进行扩展。代码的价值不在于写得复杂,而在于把原本依赖个人经验的检查条件明确记录下来。

电商数据抓取项目的交付物不应只是一个文件、一张表或一个看板。真正可持续的交付物至少包括:可解释的数据模型、可复用的清洗规则、可追溯的原始记录、明确的质量指标和能够触发业务动作的应用视图。
如果团队只能回答“我们抓到了多少条数据”,却无法回答“哪些数据可以比较”“哪些记录被排除”“这个价格代表什么”“价格变化后谁需要采取行动”,那么项目仍然停留在采集层。
降低数据清洗成本的关键,不是把所有工作都交给自动化,而是把高频、明确、可重复的判断规则产品化,把低频、复杂、有业务歧义的判断保留给人。
这也是为什么我不建议一开始就追求全量抓取、全自动匹配和实时更新。先确定业务动作,再确定数据粒度;先定义字段口径,再选择工具;先建立质量阈值,再扩大采集范围。顺序正确,工具才会放大效率;顺序错误,工具只会更快地制造返工。
当数据清洗不再是每天重复修表,而是变成有字段、有规则、有质量指标、有异常入口和有业务反馈的稳定流程时,团队才真正完成了从“电商数据抓取”到“从数据到行动”的转变。


读者评论
文章把清洗成本放到需求和数据建模阶段来分析,比较符合实际。尤其是区分SPU、SKU、店铺和采集记录,对搭建商品主键很有帮助。
价格口径和销量周期确实是电商数据中最容易被忽略的问题。将原始观测字段与标准业务字段分开,能减少后续争议,但规则仍需结合具体业务确认。
文中的返工耗时属于情景模拟,不能直接代表行业水平,不过成本拆解思路比较清晰,能够帮助团队定位重复核对和口径确认等主要问题。
文章没有把所有重复记录简单删除,这一点比较客观。不同分析目标需要不同粒度,历史采集记录本身也可能是趋势分析的重要数据。
关于空值不能统一填零的提醒很实用。建议实际项目中进一步建立异常监控、规则版本和质量验收机制,否则前置清洗规则也可能逐渐失效。