两个“深度”为什么容易混在一起
在抓取日志里,常看到首页被反复抓取,而某个三级栏目下的内容页几乎没出现过抓取记录。这时容易先归因于“蜘蛛不喜欢这个栏目”,但更常见的原因是:点击深度(用户从首页点到目标页需要几次点击)和抓取深度(蜘蛛从入口顺着链接到达该页面的层数)并不一致。前者由导航决定,后者由链接结构决定,两者错位时就出现断层。
抓取深度不是一道硬性上限,但层级越深,链接传递与调度优先级越容易被稀释。当入口页本身的抓取频次就低,再往下层传导的抓取机会自然更少。
断层常见的几种表现
- 栏目页有抓取记录,但栏目下的详情页长期为零或极少。
- 列表页只被发现第一页,第二页之后的链接没有被跟随。
- 同一批内容在 Sitemap 中有 URL,但实际抓取路径只剩站点地图这一条。
- 导航或面包屑里的链接指向的是筛选后的 URL,与真实详情页 URL 并不相同。
排查顺序
第一步:以首页为起点做一次链接抓取
用爬虫工具从首页出发,记录每个 URL 的层级与入链数量。注意区分两件事:链接是否存在、链接是否可被跟随(是否被 nofollow、是否由脚本插入、是否要交互后才渲染)。如果某个栏目在第三层才出现,其下内容就处在第四层左右,抓取传导会明显变慢。
第二步:核对导航与列表页的分页链接
分页链接是否由可点击的 a 标签承载,决定了详情页能否被逐页发现。只在页面上渲染“下一页”按钮、由前端事件切换内容的实现,会让第二页之后的入口断层。同理,筛选条件生成的组合 URL 如果数量巨大,会把有限的抓取量摊薄,真正需要抓取的详情页反而被排到后面。
第三步:检查 URL 层级与实际目录是否一致
有些站点物理目录很浅,URL 路径却很长,而页面之间只靠站内搜索或参数跳转相连。这种情况给人的印象是“很深”,但真正的问题是缺少横向链接:同栏目内相关内容互链、标签聚合页、专题页,都能把深层页面拉到更浅的入口位置。
第四步:判断站点地图的补位作用
Sitemap 是补充入口,不是替代内链的手段。它可以缩短发现时间,但如果页面本身没有任何内链指向,即使被抓到,也很难获得持续回访。把 Sitemap 当作最后一道保险,而不是主要路径。
可以落地的调整方向
- 在栏目页首屏给出足够数量的详情入口,避免全部依赖分页。
- 为深层页面增加同栏目推荐、上一篇/下一篇、标签聚合等横向链接。
- 把重要栏目固定在主导航或面包屑中,减少点击层级。
- 收敛参数组合,对筛选页做合理的入口控制,避免重复 URL 摊薄抓取量。
- 定期用日志比对:被抓取最多的 URL 与被内链指向最多的 URL 是否一致。
判断标准不是“页面排在第几层”,而是“从任意常用入口出发,能否在较少跳转内稳定到达”。深度只是表象,链接数量与入口质量才是可以动手调整的部分。
验证与观察
调整后不要急着下结论,先看日志中该栏目的抓取条数与状态码分布是否变化,再看详情页 URL 是否开始出现。如果仍然没有,回到第一步重新确认链接是否真的可被跟随,而不是只在浏览器里点得通。服务器响应是否稳定、是否对蜘蛛请求返回了不同内容,也会影响结果,这部分可以用同一 UA 手动请求做对照。