判断采集是否遗漏,不能只看软件显示的“已采集”数量,而要用独立于该软件的另一套口径做交叉核对。具体做法是:固定一个时间窗口,把软件记录、站内原始日志和搜索平台报告三者的条目清单分别导出,按URL和参数逐条比对,找出只出现在其中一方的记录。遗漏既可能是软件没抓到,也可能是抓到了但没写入、没去重正确,或统计口径本身不同。
采集遗漏常被混为一谈,实际至少有三种情况:一是请求根本没发出或没成功,属于抓取遗漏;二是请求成功但解析失败,页面内容没被提取,属于解析遗漏;三是数据已入库,但报表过滤条件把它排除了,属于展示遗漏。三者处理方式完全不同,先分类再动手,能避免把时间花在改过滤条件上,而真正的问题在抓取层。
区分方法很直接:查看软件是否保留了原始响应记录或抓取日志。如果能看到某URL的请求状态和返回内容,就能判断是抓取问题还是解析问题;如果软件只给汇总数字,就要靠外部证据反推。
不要用同一个软件的两个报表互相对照,那只能发现展示层问题。有效核对需要来源不同的数据:
把三者按同一时间窗口导出,以URL为主键做并集比对。只出现在日志、不出现在软件记录里的URL,是抓取遗漏的候选;只出现在软件记录、日志里没有的,可能是软件重复计数或请求未真正到达。注意第三方估算流量、搜索平台报告与站内统计口径本来就不同,数值对不上不等于遗漏,要比的是条目而不是总量。
时间和人手有限时,按“排查代价从低到高”排序,而不是按怀疑程度排序:
判断结果的标准:如果过滤规则一改,缺失条目就出现了,说明是展示或去重遗漏;如果补上翻页后条目增加,说明是覆盖范围遗漏;如果失败率明显偏高,才需要处理抓取层。
假设要核对某栏目一周内的文章采集情况(以下为假设示例,非真实项目数据):从站内日志筛出该栏目路径下的全部URL,得到清单A;从采集软件导出同路径记录,得到清单B;用表格做差集,得到只在A中的URL。抽取其中5条,逐条在浏览器打开确认页面可正常访问。若可访问却未被采集,回到软件的抓取日志看这几条是否有请求记录:有请求但无内容,查解析规则;无请求,查任务范围与翻页设置。
适用条件:页面可公开访问、无需登录、URL结构稳定。如果页面依赖登录态或动态渲染,日志与软件记录的差异可能来自渲染方式不同,需要先确认软件是否执行了脚本再判断遗漏。
一次性核对只能解决当下问题。要持续判断是否遗漏,可以固定三个检查项:每次任务结束后抽查差集清单、定期核对分页覆盖、记录抓取失败率的变化趋势。这样下次出现遗漏时,能快速定位是范围、解析还是抓取层的问题,而不必从头排查。
下一步建议:选一个你正在使用的采集任务,导出它的URL清单,与站内日志做一次差集,先确认遗漏发生在哪一层,再决定是否调整规则。