先做一个可判定的对照实验:用教程里最简的一条规则,在教程作者提供的原始页面上跑一次,再换到你自己的目标页面跑一次。如果原始页面能出结果、你的页面不能,问题大概率在环境或页面结构;如果两边都不出结果,才优先怀疑步骤本身。这个实验能帮你把“环境差异”和“步骤差异”分开,而不是混在一起反复重装。
很多人复现失败,是因为一上手就跑完整任务:多级列表、分页、字段清洗全开。变量太多,任何一处不同都会让结果为空。正确做法是先从教程里挑一个只抓标题和链接的单页规则,把它当成基准。
具体动作是:把教程示例页面的地址保存下来,用同一份规则文件分别对示例页面和你自己的页面执行一次采集。记录两个结果:示例页面是否出数据、你的页面是否出数据。这一步的产出不是“成功或失败”,而是一张两行两列的小表,它决定你下一步往环境查还是往步骤查。
环境差异指的是采集软件之外的运行条件不同,它往往表现为“规则没动,但结果变了”。可以按下面顺序看证据:
一个可区分的证据是:如果同一规则在示例页面正常、在你的页面返回空,且你的页面在浏览器里手动能打开,那么优先查页面结构和编码,而不是查软件安装。
步骤差异指的是规则配置本身与教程不一致。它常表现为“换了页面也一样失败”。排查时可以对照教程的每一步,重点看这几处:
判断方法很简单:把教程的规则文件原样导入,只替换目标网址,不改任何配置。如果这样能出结果,说明步骤本身没问题,差异在你后来改动的地方;如果这样也不出结果,才需要回到教程逐步核对。
假设教程示例页面是静态HTML,标题在<h1>标签里;你的目标页面标题由脚本渲染,初始HTML里没有<h1>。此时同一份规则在示例页能抓到标题,在你的页面抓到空。这个现象有两种合理解释:一是页面结构不同(环境差异),二是规则里的定位表达式写错了(步骤差异)。
区分办法是:用采集器的内置浏览器打开你的页面,查看渲染后的源码里是否存在<h1>。存在,则问题在采集时机或渲染等待设置;不存在,则要改用能匹配脚本输出的定位方式。这个动作的结果直接决定你下一步是调等待参数还是改定位表达式,而不是盲目重装软件。
完成上面的对照后,你会得到三种结论之一:
每种结论对应不同的下一步:第一种去调整采集时机或定位基准,第二种去逐项比对教程配置,第三种去核对字段处理链条。不要跳过对照直接重装或换工具,因为那会把环境差异和步骤差异再次混在一起,让你失去判断依据。把每次对照的结果记下来,下一次遇到同类页面时,你就能直接判断该查哪一侧,而不是从头再猜一遍。