搜索抓取

孤岛页面与抓取死胡同:蜘蛛走不通的那几条路

内容正常、状态码也正常,却长期很少被抓取,问题常常出在站内路径上。本文梳理孤岛页面、空列表页、分页断链等常见抓取死胡同,说明 Sitemap 与内链各自的作用边界,并给出从首页步行排查、比对 Sitemap、检查服务器日志的实用思路。

搜索抓取

孤岛页面与抓取死胡同:蜘蛛走不通的那几条路

站点里常有一类页面:内容本身没问题,状态码也是 200,但蜘蛛几乎不会主动走到它面前。它们没有被 robots 挡住,也没有被 noindex 排除,只是站内没有任何一条普通链接指向它们。这类页面通常被称为孤岛页面,而它们所处的位置,往往就是抓取路径上的一条死胡同。

孤岛页面:有地址,但没有路

URL 发现的来源大致有三种:外部链接、Sitemap 和站内链接。前两种能告诉蜘蛛“这个地址存在”,但只有站内链接能告诉蜘蛛“这个地址在站点里处于什么位置”。如果一份页面只能通过 Sitemap 被看到,它被回访的频率通常更低,重抓也更多依赖 Sitemap 的更新时间信号,而不是页面自身在站内的重要性。

典型的孤岛来源包括:改版后保留下来的旧落地页、只在投放后台使用的活动页、只能通过站内搜索到达的筛选结果,以及被分页链丢在后面的老文章。它们不会报错,却也很难被重新发现。

几种常见的抓取死胡同

零结果与空列表页

分类页在没有内容时返回 200 并显示“暂无结果”,蜘蛛会把它当作正常页面反复抓取。这类页面每次拿到的内容几乎一样,会持续消耗抓取资源。更稳妥的处理是:内容确实为空时返回 404 或 410,或者至少加 noindex,同时让内链不再指向它。

分页链断在中间

不少列表页只保留“下一页”,不提供跳到末页的入口。蜘蛛走到某一页后如果找不到下一页链接,链条就停住了。把分页做成可爬的链接序列,而不是纯 JS 按钮,能让蜘蛛继续往后走,也方便用户直接跳转。

只有交互才能抵达的入口

下拉加载、点击展开、选项卡切换这类交互,如果底层没有对应的 a 标签,蜘蛛很可能拿不到后续地址。至少要给主要内容留一条普通链接作为兜底,比如列表页提供“查看全部”的静态链接。

Sitemap 是补充,不是替代

Sitemap 适合解决两类问题:新页面来不及被站内链接发现,以及深层页面容易被漏掉。但它不描述页面之间的关系。一个只靠 Sitemap 支撑的页面,缺少内链上下文,被发现的路径也更单薄。较合理的做法是:重要页面既有内链,也有 Sitemap 记录;Sitemap 用来保证覆盖,内链用来保证路径。

路径通了,还要走得动

服务器稳定性会直接影响抓取路径的完整性。响应时间波动大、超时频繁或连接被重置时,蜘蛛可能在半路放弃已经排队的 URL,下次再来又要从入口重新走一遍。抓取路径越深,这种损耗越明显。把首页到重要页面的点击距离控制在少数几层,同时保持首字节时间稳定,通常比单纯把 Sitemap 做大更有效。

排查思路

  1. 从首页出发,只靠站内链接走一遍,记下哪些重要页面走不到。
  2. 用 Sitemap 里的 URL 和站内可点击 URL 做比对,找出只出现在 Sitemap 中的地址。
  3. 检查列表页、分页页、筛选页在空结果时的状态码和内链处理方式。
  4. 翻服务器日志,看这些 URL 是否被抓取过,抓取时有没有伴随 5xx 或超时。
  5. 修正后观察一段时间,对比这些 URL 的抓取频次是否有变化,而不是立刻下结论。
蜘蛛不会替你补上缺失的那条路。它只能沿着已有的链接往前走,走不通的地方,内容再好也容易被长期搁置。