蜘蛛不会凭空知道站点上有哪些 URL。它的主要路径,是从一个已经抓过的页面出发,沿着页面上的链接走到下一个页面。一个页面离已知入口越远,需要经过的链接跳数就越多,被抓到的机会通常也越靠后。把这件事量化一下,就是常说的抓取深度。
深度是怎么算出来的
抓取深度不是照搬网站的栏目层级,而是蜘蛛按链接实际走出来的最短路径。同一个页面,从首页导航点两下能到,深度就是二;如果只能从某个列表页第 8 页翻进去,深度可能变成七、八层。栏目结构设计得再整齐,只要链接走不通,对蜘蛛来说这条路径就不存在。
影响深度的几个变量
- 链接的绝对数量:一个页面上的链接越多,单个链接分到的权重和注意越少,深链条上的链接更容易被忽略。
- 链接出现的位置:导航、正文里的链接,通常比页脚和侧边堆积的链接更早被处理。
- 链接是否真的可抓:依赖 JS 拼接出来的链接、带 nofollow 的链接、需要点击才加载的链接,都可能让路径走不下去。
- 入口的分散程度:同一批内容有多个入口时,蜘蛛取的是最短那条,其余路径对它意义不大。
深度过深时,日志里能看到什么
在没有额外提交的情况下,深层页面的抓取频次往往会明显低于浅层页面,甚至长期没有记录。常见现象是:首页和二级栏目每天被访问多次,而最底层的内容页几周才出现一次,或者只在你主动提交后才被抓一次。这时问题通常不在服务器,而在路径太长、路径上的节点太少。
一个容易忽略的点
深度是相对入口而言的。新增了一批内容,却没有从已有被频繁抓取的页面链接过去,这批 URL 就只能等着被发现,速度取决于 Sitemap 被读取的频率,而不是站点更新的节奏。
把重要页面拉浅的几种做法
- 梳理哪些是不带时间属性、值得长期被访问的核心页,把它们放进主导航或栏目首屏。
- 给深层内容增加横向入口,例如相关推荐、标签聚合页、专题页,让路径从七八跳压缩到三四跳。
- 检查列表页分页是否可抓,深链条常常断在分页上。
- 减少同一页面里无意义的重复链接,避免把预算耗在同一批浅层 URL 上。
- 对确实无法拉浅的长尾内容,用 Sitemap 作为补充发现渠道,而不是唯一渠道。
Sitemap 与内链的分工
Sitemap 解决的是“告诉蜘蛛有哪些 URL”,内链解决的是“蜘蛛走了哪条路过去”。前者适合做全集清单,后者决定抓取顺序和再抓取的频率。两者配合的常见做法是:Sitemap 保持完整、可解析,内链则重点覆盖那些需要更快被访问的页面。只做 Sitemap 不做内链,页面会被发现,但可能长期停留在低优先级队列里。
判断深度问题不要只看站点结构图,要看日志里蜘蛛进入这些页面时带的 referer 是哪个 URL。那条链才是它真正在走的路。
可以按这个顺序检查
先取一份近期日志,找出连续几周都没有抓取记录的页面;再看这些页面最近的入链来自哪里,把路径上的每一跳列出来;然后判断断点是在分页、在 JS 渲染,还是在没人链接的孤岛页面。多数时候,改动的重点不是加更多 Sitemap 条目,而是给这些页面补一条从频繁抓取页出发的链接。