先给结论:入口页正常只能证明“这一条URL可被抓取”,不能证明深层链路可发现、可传递、可索引。定位断点应从入口页向外分层验证,而不是继续重复提交入口页。最有效的第一步,是把深层页按“是否被内链指向、是否被抓取、是否进入索引”三类分别取样,再判断断点落在发现层、抓取层还是索引层。
常见矛盾现象是:栏目页或首页在百度有稳定结果,但点进去的二级、三级页面始终不出现。此时有两种解释需要分开。
解释一:深层页根本没被发现。入口页可抓取,但深层页只靠站内搜索、JS 渲染后生成的链接或参数跳转到达,爬虫沿静态 HTML 走不到。入口页正常,只是说明入口本身没问题。
解释二:深层页被发现了,但在抓取或索引环节被过滤。比如链接存在但被 nofollow、robots.txt 拦截、返回 4xx/5xx、内容与已有页面高度重复,或页面主体依赖渲染而首屏为空。此时入口页正常,是因为问题不在入口。
这两种解释对应的处理动作完全不同:前者要修链接可发现性,后者要修抓取响应或内容信号。若只反复提交入口页,两种问题都不会被解决。
不要只看“收录量”一个数字。更可操作的证据组合如下:
<a href> 到达深层页。若必须点击按钮、执行脚本或提交表单才出现链接,爬虫可能走不到。Disallow,页面没有 noindex。注意,robots.txt 的抓取限制不等于可靠的索引移除,它只约束抓取行为,不能替代索引状态判断。把这几项放在一起,通常能收敛到一层。例如:日志无请求 + 静态 HTML 无链接 = 发现层断点;日志有请求 + 返回 200 但正文空 = 抓取后内容层断点;日志有请求 + 返回 200 + 正文正常但长期不出现 = 更偏索引筛选或竞争问题,需要继续看内容质量和重复信号。
建议按下面顺序做,每一步的结果决定下一步:
<a href> 路径。noindex。若正文为空或状态异常,修渲染或服务端响应。这个顺序的价值在于:它把“入口正常”这个已知条件排除掉,避免在入口页上做无效动作。每次验证的结果会直接缩小下一层范围。
假设一个站点有 200 个深层页,其中 10 个样本在日志中有请求、返回 200、正文正常,但只有 2 个出现在结果中。此时不能直接得出“链路已通,全部等收录”的结论。因为样本量小,且这 10 个可能集中在同一模板。更稳妥的做法是按模板分层抽样,而不是按 URL 顺序抽样。若不同模板表现差异明显,断点更可能在模板层,而不是单页层。
反过来,如果 10 个样本全部无请求,也不能立刻断定是 robots.txt 问题。还要排除入口页本身未被抓取、内链被 JS 隐藏、站点地图未提交等解释。请求量或抓取量归零不能单独证明处理正确,它只能说明当前路径没有被走到。
这套方法适合“入口页正常、深层页异常”的站点,前提是你能拿到服务端日志或至少能直接请求深层 URL。若站点完全依赖客户端渲染且没有服务端日志,定位成本会显著上升,此时优先修可抓取的静态链接和首屏内容,而不是继续扩大抽样。
另一个取舍是:先修内链还是先修渲染。若静态链接完全不可达,先修内链;若静态链接可达但正文为空,先修渲染或服务端输出。两者顺序颠倒,会导致验证结果无法解释。HTTPS 不保证安全无漏洞或排名,它也不是这一层断点的判断依据,不要把它当作收录问题的直接原因。
最后,不同搜索引擎对同一站点的抓取和索引行为可能不同,百度语境下的结论不要直接套用到其他引擎,需要分别核查。