搜索抓取

内链层级越深,蜘蛛走得越浅:抓取深度与页面覆盖的关系

蜘蛛从首页或 Sitemap 出发,只能顺着链接一层层往下走。层级越深,中转页消耗的抓取次数越多,能被访问到的详情页就越少。本文说明抓取深度怎么计算、层级如何影响页面覆盖,以及用日志判断深度问题、用横向链接和分页链接改善抓取路径的具体做法。

搜索抓取

内链层级越深,蜘蛛走得越浅:抓取深度与页面覆盖的关系

蜘蛛进入一个站点,起点通常只有几个:首页、Sitemap、外链指向的落地页,以及 robots 里声明的地址。从这些起点出发,它能走多远,取决于页面之间怎么互相链接。层级越深,蜘蛛到达该层页面要消耗的抓取次数越多,最终被看到的页面就越少。

抓取深度是怎么算出来的

把入口页当作第一层,顺着 a 标签往下点一次算一层。深度是按最短路径算的,如果同一页面既有首页直达链接,又藏在三级目录里,蜘蛛走的是那条更短的路。所以真正决定覆盖范围的,是站内最短路径的分布,而不是某个页面在目录结构里看起来有多深。

  • 首页直接出链的页面,深度为 1
  • 经过一次分类页中转的,深度为 2
  • 需要经过列表页、筛选页、详情页多跳的,深度可能到 4 以上

每一层都在消耗抓取额度

站点每往下一层,页面数量往往会成倍增加。列表页翻页、筛选参数、日历归档这些会再制造出大量 URL。蜘蛛单轮抓取的请求数是有限的,它把请求花在中转页上,留给详情页的份额就少了。层级过深的站点,经常出现这种情况:列表页被抓了很多次,详情页却长期只有一小部分被访问过。

深度不只是结构美观问题,它直接决定蜘蛛在一轮抓取里能覆盖到多少终端页面。

扁平化不等于把链接全堆在首页

减少层级是有效方向,但把几百条链接塞进首页,效果往往相反。首页出链过多会稀释每条链接的注意力和可分配额度,也容易让重要页面和临时页面混在一起。更稳的做法是保留必要的中间层,让分类页承担分发职责。

一个可参考的层级安排

  1. 首页只指向主要栏目和少量高价值入口
  2. 栏目页指向子分类与热门详情页
  3. 列表页负责把新内容和长尾内容递出去,并保证分页链接可抓取
  4. 详情页通过相关推荐、上一篇下一篇回指同类页面,增加横向通路

横向链接的价值常被低估。同层页面之间的互链,可以让蜘蛛不依赖首页入口也能走到另一片区域,等于把一条深路径压成了两条浅路径。

怎么判断深度已经成了问题

比较直接的办法是看服务器日志。把被抓取的 URL 按层级归类,如果某一层以下几乎没有访问记录,就说明蜘蛛没有走到那里。另一个信号是对比 Sitemap 与抓取记录:Sitemap 里列了、内链却指不到的页面,蜘蛛通常要更久才会处理,甚至长期搁置。

  • 被访问的 URL 集中在首页、栏目页和少量热门详情页
  • 新增内容上线后长时间没有抓取记录
  • 日志里出现大量参数页、筛选页,而正文页很少

几个容易踩的坑

  • 面包屑只做了样式,链接不可点或指向错误地址
  • 列表分页用按钮加 JS 触发,蜘蛛读不到下一页
  • 重要栏目藏在导航的下拉菜单里,展开前没有可抓取的链接
  • 内容全部靠接口异步加载,首屏只有骨架

服务器稳定性也参与这个过程。如果抓取过程中频繁超时或返回错误,蜘蛛会降低访问频率,原本能走到第五层的路径可能只走到第二层就停了。深度问题往往不是单独出现的,它和响应质量、URL 总量一起决定最终的覆盖结果。

实际做法不需要太复杂:把重要页面收敛到三次点击以内,给列表和分页留出可抓取的链接,定期用日志核对哪些层级被漏掉。层级理顺之后,剩下的事情交给时间。