检查搜索引擎爬虫前后环节的依赖,核心是沿着“发现链接→抓取请求→响应与渲染→内容入库”的链路,逐段确认上游输出是否真的被下游接收。做法不是猜,而是用日志、抓取统计和页面返回结果做交叉比对:如果上游已经发出信号,下游却没有对应动作,依赖就在这一段断了。
搜索引擎爬虫的完整链路通常包含四段:URL 被发现(内链、站点地图、外链)、爬虫发起请求、服务器返回可抓取内容、内容进入索引候选。每一段都依赖上一段的输出。排查前先用一张纸或表格列出这四段,标出你手上能拿到的证据来源,例如服务器访问日志、抓取统计报告、robots.txt、页面 HTML。没有证据来源的环节,先补采集手段,再谈判断。
Disallow。怎么查:直接读取 robots.txt,用路径前缀逐条比对,注意 * 和 $ 的匹配范围。结果说明:若被挡,爬虫不会请求该 URL,后续所有环节都不会发生;但这只是抓取限制,不代表页面已从索引移除,索引移除需要另外的机制。<a href> 形式存在。怎么查:查看渲染后的 HTML,而不是只看源码;对依赖 JavaScript 插入的链接,要确认渲染后 DOM 中确实出现。结果说明:链接不存在或不可跟随,爬虫就缺少发现路径,此时问题在上游,不在抓取端。假设某分类页新增了 20 个商品链接,但商品页迟迟没有抓取记录。按上面清单查:robots.txt 未挡、链接在渲染后存在、站点地图也包含这些 URL,但日志里只有分类页被抓、商品页零请求。此时依赖断点在“链接可发现但未被跟进”,可能原因包括链接层级过深、页面抓取预算被其他 URL 占用、或链接位于需要交互才展开的区域。注意这是多种可能,不能凭一个现象断定唯一原因,需要继续用日志验证抓取频次和入口分布。
日志无请求、robots 被挡、链接缺失,这三者都能解释“页面没被抓”,但证据强度不同:robots 被挡是可直接确认的规则性阻断;链接缺失是可确认的发现路径缺失;日志无请求只说明现象,还要结合抓取统计判断是准入问题还是调度问题。把每条结论标注为“已确认”或“待验证”,避免把推测当成定位结果。不同搜索引擎对 robots、站点地图、渲染的支持细节需要分别核查,不要用一家的表现推断另一家。
下一步:选一个当前有问题的 URL,按上面五项依次记录证据,把断点定位到具体环节后,再针对该环节做最小改动并复测日志变化。