当站长工具从接受一个URL、一份站点地图,变成接受批量URL列表、结构化数据文件或某种导出包时,输入规范不能只改字段名,而要先判断旧对象里哪些信息在新格式中仍然可表达、哪些必须补全。判断标准是:新格式是否要求每个对象自带唯一标识、来源和适用范围;如果要求,就必须把原来靠上下文隐含的信息显式写进去,否则工具即使能导入,也会把不同对象混成一条或直接丢弃。
格式变化通常不是整份资料一起变,而是某一层先变。你需要把手里要提交的资料拆成三层看:第一层是单个对象,例如一条URL、一个页面记录或一条查询记录;第二层是容器,例如纯文本列表、CSV、JSON数组或压缩包;第三层是字段语义,例如原来叫“地址”,现在叫“目标”,或者原来允许留空,现在要求必填。
三层里只有一层变化时,处理方式完全不同。如果只是容器从纯文本变成CSV,对象和字段语义没变,输入规范主要改分隔符、表头和转义规则。如果字段语义变了,例如原来一个字段同时放域名和路径,现在拆成“主机”和“路径”两个字段,那么即使容器没变,也必须先做字段映射,不能直接把旧列名照搬过去。如果对象本身变了,例如从提交页面变成提交页面加参数组合,那输入规范要新增对象粒度说明,否则同一页面的不同参数会被当成重复对象。
实际动作:先拿三条最典型的旧对象,逐条写出它在新格式下对应哪个对象、哪个容器、哪些字段。写不出来的那条,就是规范需要补的地方。这个动作的结果会直接决定下一步是改表头,还是改对象粒度,还是只改分隔符。
假设你手里有一份旧资料,准备提交给一个已经改变对象格式的工具。下面四步是按依赖顺序排的,前一步的输出是后一步的输入。
这四步里,第二步最容易出错。原因不是格式难,而是旧资料常把多个含义压在一个字段里。例如旧字段“页面”可能同时包含域名、路径和参数。新格式如果把它们拆开,你就必须做拆分规则;如果新格式仍允许合并,你也要决定是保持合并还是借机拆开,因为这会决定后续能否按主机或路径单独筛选。
面对格式变化,常见取舍是:继续用旧的粗粒度对象,还是借新格式升级为更细粒度。两者都有成立条件,不是越细越好。
保持旧粒度成立的条件:你的后续动作只按对象整体执行,例如整条URL提交、整页检查,不需要按参数、按设备或按地区分别处理;旧资料里也没有稳定字段能支撑拆分。此时输入规范应重点保证唯一标识不重复、容器格式正确,不强行拆字段。
升级粒度成立的条件:你的后续动作需要按子对象分别判断,例如同一路径下不同参数要分别记录,或者同一页面的不同语言版本要分别提交;并且旧资料里有足够字段能区分这些子对象。此时输入规范必须新增子对象标识和父对象标识,否则拆分后无法回溯到原对象。
假设一个短例子:旧资料只有一列“页面地址”,共100条。新格式要求每条记录带“对象类型”和“来源”。如果这100条全部是同一类型、同一来源,那么输入规范可以统一填这两个字段,保持旧粒度即可。如果其中30条来自站点地图、70条来自手工整理,就必须增加来源字段并逐条标注;否则导入后无法区分批次,后续排查会失去依据。这个例子里的数字只用于说明比较方法,不代表任何真实数据规模。
改完规范后,不要只看工具是否接受。更有区分度的验证是看三个结果:
这三个结果里,对象数量一致是最低要求,唯一标识可回溯是可用要求,字段值未被静默改写是可信要求。如果只满足第一条,说明输入规范只是“能跑”,还不能支撑后续决策。此时应回到字段映射表,补上转换规则和校验步骤,而不是继续提交更多资料。
有时你按新规范改了输入,工具仍不接受。这时不要立刻断定是规范错误,因为还有几种合理解释需要先排除。
第一种是容器层面的限制,例如文件大小、行数或编码不被接受;第二种是字段层面的限制,例如某个字段虽然存在,但只接受特定取值或特定长度;第三种是对象层面的限制,例如新格式只接受某种对象类型,而你提交的旧对象类型不在支持范围内。这三种解释对应的处理动作不同:容器问题改分片或编码,字段问题改取值或截断规则,对象问题则需要先确认该对象类型是否在本次变化中被移除或替换。
另外,如果导入后请求量、抓取量或某项统计归零,也不能单独证明你的输入规范处理正确。归零还可能来自工具侧尚未开始处理、对象被排队、或统计口径变化。正确做法是保留一份最小样例和对应源资料,先确认对象数量和唯一标识,再判断是否需要调整输入规范。
最后要提醒的是,具体工具对对象格式、字段名称、必填项和容器限制的说明可能随版本调整,本文不假设任何特定品牌的现行功能。你在改输入规范前,应以该工具当前提供的格式说明或校验反馈为准;如果没有公开说明,就用最小样例做一次可回溯验证,再决定是否批量转换。