同一套采集规则跑出异常时,新人常从“哪里报错”入手,资深人员常先看“数据在哪个环节开始偏离”。两种诊断路径没有绝对对错,关键区别在于证据是否可对照、是否能排除其他解释。下面用一个假设情境说明:当网站结构或访问条件发生变化后,如何用证据决定该改规则、改流程,还是先停下来核实。
假设一个采集任务原本每天稳定产出商品名称、价格和库存状态。某天开始,列表页仍能抓到链接,但详情页的价格字段大量为空,库存状态则时有时无。新人看到日志里没有明显报错,第一反应是“选择器写错了”;资深人员则会先确认:是页面结构变了,还是访问被限制,抑或数据本身在页面上就不再出现。
这个情境的关键前提是:采集目标、字段定义和输出格式都没有主动修改。只有在这个前提下,才能把“结果突变”当作诊断起点。如果字段定义刚被调整过,那么缺失可能来自规则变更,而不是外部变化。
新人的优势是路径短、动作具体。面对价格字段为空,可以先做三件事:
如果单条运行能拿到价格,而批量运行拿不到,问题更可能出在访问频率、会话状态或请求头差异上,而不是选择器本身。这个动作的结果会直接影响下一步:单条成功意味着应优先检查批量请求的节奏与身份一致性;单条也失败,才回到页面结构和选择器。
资深人员通常不急着改规则,而是先建立一组可对照的证据。常见做法是固定同一批样本页面,在变化前后分别保存原始响应、解析结果和时间点,然后比较三类信号:
这套对照的价值在于:它把“我猜是选择器坏了”变成“哪一层证据支持哪个判断”。如果原始响应没有价格,却仍反复调整选择器,就会浪费大量时间,而且改完后可能暂时看似恢复,实际只是样本碰巧不同。
新人与资深人员的分歧,往往不是谁更懂工具,而是对“证据强度”的要求不同。可以用一个简单条件判断:
这里有一个实际动作:把最近一次正常产出和当前异常产出的原始响应各保留一份,标注抓取时间与入口。这个动作的结果会决定下一步是回滚规则、调整请求策略,还是继续观察。若两份原始响应中目标字段都存在,而只有解析结果不同,那么修改解析规则是合理方向;若原始响应中字段已经缺失,继续改选择器通常不会带来稳定改善。
无论新人还是资深人员,诊断结束后都应留下一段可交接的记录,而不是只留下改过的规则。记录至少包含:异常出现的时间范围、样本页面、原始响应与解析结果的对照、已排除的原因、当前结论和下一步动作。这样下一次同类异常出现时,接手的人不必从零猜测。
例如,假设记录中写明“批量请求在固定间隔下价格字段缺失,单条请求正常,原始响应中价格存在”,那么下一步应检查请求间隔与会话状态,而不是重写选择器。若记录中写明“原始响应中价格文本已不存在,且多个样本一致”,那么下一步应确认数据源是否改版或字段是否被移到其他位置。两种结论对应完全不同的动作,这也是对照证据的意义。
诊断的终点不是“这次修好了”,而是知道在什么条件下该采用哪条路径,以及什么证据能推翻当前判断。把这一点写清楚,新人和资深人员的经验才能在同一条证据链上衔接起来。