搜索抓取

蜘蛛走进死胡同:那些没有出链的页面怎样卡住抓取路径

蜘蛛在站内移动靠的是链接。本文说明哪些页面会被当作死胡同、它们为什么拖慢抓取覆盖率,以及列表页、归档页、文章页分别该怎么补上出链。也给出用爬虫工具和日志自查的方法,并列出处理时的几条取舍原则。

搜索抓取

蜘蛛走进死胡同:那些没有出链的页面怎样卡住抓取路径

蜘蛛在站内行走,靠的不是全站扫描,而是一个页面一个页面地顺着链接往外走。如果某个页面没有任何可用的出链,蜘蛛走到这里,路径就结束了。这类页面可以叫“死胡同”。它本身不一定有问题,但数量多了之后,会让蜘蛛的有效抓取路径变短,很多本该被发现的 URL 就没人带路了。

什么样的页面算死胡同

判断标准其实很简单:从这一页出发,蜘蛛还能不能继续往下走。以下几种情况都算。

  • 正文结束就没有了,页面里没有任何指向其他内容的链接;
  • 有链接,但全部指向 404、410 或被 robots 屏蔽的地址;
  • 列表页因为筛选条件过窄,结果为空,也没有“返回上一级”或推荐入口;
  • 链接是用 JavaScript 渲染的,蜘蛛拿到的 HTML 里看不到 href;
  • 所有出链都写了 nofollow,蜘蛛不跟。

要注意的是,死胡同和孤立页是两个不同的问题。孤立页是没有入链,蜘蛛根本进不来;死胡同是进得来、出不去。前者影响“被发现”,后者影响“继续发现”。

死胡同为什么会拖累抓取

蜘蛛的抓取时间是有限的。它每次来访,都是在有限次数内决定先看哪些页面。如果一条路径走到某个页面就断了,那么这条路径上后面的 URL 就只能靠别的入口被发现。久而久之,站点会形成“入口很热闹、后面很空”的格局,内页的抓取覆盖率不容易上去。

更常见的情况是,死胡同集中在分页尽头、标签末页、归档旧页这些地方——而它们恰恰是通往大量历史内容的通道。

几个常见的处理做法

列表页留一条退路

空结果页不要直接返回 404,也不要做成纯提示页。保留面包屑、上一级分类链接、同分类下的热门条目,让蜘蛛还有下一步可走。筛选参数造成的空页可以加 noindex,但链接最好还是留着。

文章页给出相关入口

相关阅读、上一篇/下一篇、同标签文章,这类模块不只为用户服务,也是蜘蛛的下一跳。数量不必多,三到五条、指向真实存在且内容相关的页面即可。

别把出链全堵上

nofollow 用在评论、广告、不可信外链上是合理的,但站内导航和正文里的相关链接被批量加上 nofollow,等于自己把路封了。这类属性和抓取路径的关系,值得单独梳理一遍。

给旧归档页续上链接

历史归档翻到最后一页往往就停住了。可以在末尾放一个“按年份或分类浏览”的入口,把蜘蛛引回主干路径。

怎么找出站点里的死胡同

  1. 用爬虫工具跑一遍,筛出“出链数为零”和“出链全部失效”的页面;
  2. 对比服务器日志,看蜘蛛在这些页面上是否还有后续请求;
  3. 检查日志里频繁被抓取、但从不带来新 URL 的页面,这些往往是无效末端;
  4. 把结果按目录归类,看死胡同是零散的,还是集中在某个栏目。

处理时的几条原则

  • 先补链接,再考虑 noindex 或屏蔽。直接屏蔽一个末端页,等于把它的下游也一起丢了;
  • 不要为了“通路”硬塞一堆无关链接,蜘蛛也会跟着跑偏;
  • 死胡同并不都需要消灭,工具页、表单结果页没有出链是正常的,重点是别让重要内容页落在末端;
  • 改完之后观察一段时间,看日志里新出现的 URL 有没有变多,而不是立刻期待收录变化。
把站点想象成一张路网:死胡同本身不违法,但如果主干道上全是断头路,蜘蛛能走到的地方自然就少。