搜索抓取

内链结构里的死胡同:蜘蛛走到页面尽头之后往哪走

蜘蛛抓取是一条条路径连起来的。如果某个页面抓到之后没有可继续跟随的有效链接,这条路径就停在原地。本文梳理死胡同页的常见形态、给末端页留出口的几种做法,以及怎么用抽样和日志判断自己的内链是不是把蜘蛛带进了断头路。

搜索抓取

内链结构里的死胡同:蜘蛛走到页面尽头之后往哪走

蜘蛛在站内的移动方式,本质上是一段一段被链接串起来的行程。它抓到一个 URL,解析页面,把里面有效的链接放进待抓队列,再去下一个。如果某个页面抓到之后,页面里没有可继续跟随的出链,或者出链全都指向已经被抓过的同一批地址,这条路径就停住了。这类页面可以叫抓取上的死胡同。

死胡同本身不代表页面有问题。很多正常的内容页确实不需要往外链出。但当成片的末端页都互不连通时,站点的 URL 发现就会越来越依赖 Sitemap 和外部链接,内链这条通道等于闲置了。

死胡同常见的几种形态

  • 纯终端详情页:页面只有正文,没有同类入口、没有上一篇下一篇、也没有相关推荐,出链为零。
  • 只链回首页:有出链,但方向单一。回首页不算错,只是回到了已知区域,不产生新的 URL 发现。
  • 相关推荐靠脚本生成:HTML 里看不到链接,需要渲染后才出现,蜘蛛在未渲染阶段就等于走到了尽头。
  • 空标签页与空聚合页:标签页只有标题没有条目,聚合页筛完没有结果,页面照样返回 200,但没有可走的下一跳。
  • 列表页翻到底:最后一页之后既没有回到列表首屏的入口,也没有指向其他分类的链接。

“回首页”为什么不够

蜘蛛没有返回按钮,也不理解导航栏的心理意义。它判断的是这个页面上有哪些没抓过的 URL 值得排队。首页通常是全站被访问最频繁的地址,从末端页回首页,只是绕回了一个已经很熟的地方,对扩展覆盖范围帮助有限。

真正有用的出口,是能把蜘蛛引向同一主题下尚未被抓取的其他页面。也就是说,出口的价值不在于有几个,而在于通向哪里。

给末端页留出口的几种做法

  1. 同类内容互链:详情页底部放同分类、同标签下的其他条目,控制在合理数量,优先选更新或更完整的几条。
  2. 顺序链接:上一篇、下一篇,让同批内容形成一条可以连续走的链。
  3. 回到列表并升级:不只是回到本分类列表,还可以给一个上层分类或专题页入口,把路径往上抬一层再重新分流。
  4. 专题与标签聚合:把零散内容收进有实际条目的聚合页,聚合页再指向具体条目,形成循环而不是单向终点。
  5. Sitemap 兜底:内链补不上的孤立 URL,用 Sitemap 保证至少有一条提交路径,但不要把它当成内链的替代品。
判断一个页面是不是死胡同,可以问一句:从这一页出发,蜘蛛下一步能走到哪个还没抓过的 URL?如果答不上来,它就是末端。

出口别做成陷阱

补出链时容易走过头。页脚铺满全站链接、每个页面都链向所有分类、筛选参数可以组合出成千上万个地址,这些做法会把抓取配额消耗在低价值地址上,反而挤压了核心内容的抓取机会。

比较稳妥的尺度是:出口与当前页主题相关,数量可控,链接指向的地址本身有内容、可正常返回。凡是点进去是空列表或者需要登录才能看的,就不要放在出口位置。

怎么自查内链有没有断头路

  • 从首页出发做一次广度优先的链接抽样,记录哪些页面只有入链没有出链。
  • 统计页面的内链入度,长期为零的 URL 基本只能靠 Sitemap 被发现。
  • 翻服务器日志,看蜘蛛抓到某个页面之后是否还继续请求该目录下的其他地址,长时间没有后续往往说明这里断了。
  • 抽查相关推荐模块,确认在未执行脚本的 HTML 里是否已经有可跟随的链接。

出口再全,也要服务器配合

内链把路径铺好只是第一步。如果这些页面响应时间很长,或者间歇性返回 5xx,蜘蛛在重试几次之后会降低对整站的访问频率,路径再通也走不动。抓取速率、并发和响应时间之间需要留出余量,尤其是内链密集的列表页和聚合页。

把内链看成路网而不是装饰,末端页留一两个真正通向新内容的出口,孤立地址用 Sitemap 补上,同时保证服务器能稳定响应。这样蜘蛛的每一次抓取才更可能带来下一个新 URL,而不是停在同一批地址上反复打转。