采集规则编写遇到效果不佳时,先别急着推翻重写。判断标准是:问题出在规则细节(选择器、分页、字段映射)还是出在整体方向(目标站点结构、数据用途、合规边界)。如果同一类错误反复出现在局部字段,继续优化;如果多数目标页面根本无法用现有思路稳定提取,或数据用途已经变化,就该调整方向。
假设你要从一批结构相似的列表页提取标题、发布时间和正文,写了三条规则。运行一周后出现两种情况。
情况一:标题和正文都能取到,只有发布时间偶尔为空,原因是部分页面把时间放在<span>里,部分放在<time>里。这属于局部字段问题,继续优化的收益明确——补一条备用选择器,或加一层“先找<time>,找不到再找<span>”的兜底逻辑即可。
情况二:列表页有三分之一是异步加载,翻页靠点击而不是改网址,正文又分散在多个子域。这时你补再多选择器,也只能覆盖少数页面。问题不在规则细节,而在方向:要么换数据来源,要么改变采集目标,要么放弃这批页面。
满足这三条时,继续优化是划算的。做法上,先固定一批样本页面,改一次规则就跑一遍,记录每个字段的命中情况。不要凭感觉判断“好像好多了”,要有可对比的结果。
出现这些信号时,调整方向不是失败,而是止损。可选方向包括:换一批结构更规整的来源、改为人工整理关键字段、改用官方接口或授权数据、缩小采集范围只保留能稳定获取的部分。
把最近一次运行的失败样本拿出来,按下面几项逐条核对:
判断结果只有两种:继续优化,或调整方向。不要一边大改方向一边微调规则,那样既看不清哪一步起了作用,也浪费时间。
最常见的错误是“加选择器解决一切”。页面靠 JavaScript 渲染时,静态选择器拿不到内容,这时加再多选择器也没用,需要换获取方式或换来源。另一个错误是过早放弃:只因为一个字段取不到就推翻整套规则,而主体内容其实一直稳定。区分方法很简单——看失败是集中在边缘字段,还是动摇了主要内容。
下一步,取最近一次运行的失败样本,按上面的检查表逐条核对,先得出“继续优化”或“调整方向”的结论,再动手改。