写脚本需求时,例外情况不能只写“特殊页面跳过”,而要把触发条件、判定依据、处理动作和无法判定时的默认行为分开写。缺少完整数据或权限时,最小可执行动作是先列出已知例外类型并标注证据来源,这能防止脚本把正常页面误判为异常;但不能据此推断脚本上线后排名会变化。
假设你负责把一位同事的人工排查经验整理成脚本需求,但只有页面样本和部分日志,拿不到完整抓取记录,也没有后台配置权限。同事口头说“有些页面不能按常规改标题”。这时不要直接写“排除特殊页面”,因为开发无法判断什么叫特殊,也无法决定遇到未知情况时停下还是继续。
有效做法是把例外拆成三类:可明确判定的、需要人工确认的、当前无法判定的。每类都写清证据来源和处理动作。这样即使数据不全,脚本也能先做安全的部分,把不确定的页面留出来。
每个例外条件至少写成四段,而不是一句话。下面是一个需求片段示例,用来说明结构:
缺少默认行为是最常见的漏洞。开发遇到未覆盖的情况时只能自行决定,结果往往与人工经验不一致。
可判定的例外适合写成脚本规则,例如标题字段为空、页面类型为列表页、URL 参数超过规定数量。不可判定的例外应写成待确认清单,例如“同事认为某些页面不该改,但说不出统一特征”。
假设一批页面中,有 20 个标题为空,有 5 个被同事口头标记为“先别动”,但这 5 个没有共同字段。此时正确做法是把 20 个空标题写成明确规则,把 5 个页面单独列出并记录人工判断,而不是编造一个特征把它们包进去。这样脚本可以先处理可判定部分,不可判定部分留待补充证据后再决定。
没有完整抓取记录或权限时,仍可执行的最小动作是:用现有样本标注例外类型,记录每个类型的判断依据,并明确哪些结论不能推出。例如,样本中某类页面标题重复率较高,只能说明这批样本存在重复,不能推断全站都如此,也不能推断修改标题后排名会上升。
把这个动作的结果写进需求,开发就能知道规则覆盖范围。下一步是补齐缺失字段或扩大样本,再决定是否把待确认项转为自动规则。如果跳过这一步直接上线,后续排查会分不清是规则误判还是数据本身有问题。
脚本按例外规则执行后,比较前后表现要考虑季节、搜索需求变化和数据采集差异。某段时间点击量下降,可能是需求本身变化,也可能是采集口径不同,不能单独归因于脚本处理了例外页面。一次改动前后的对比只能作为排查线索,不能当作排名结论。
因此需求里应写明验证方式:固定观察字段、记录执行日志、保留例外页面清单。这样即使结果不理想,也能回到具体分支检查,而不是重新猜测人工经验。