搜索抓取

孤岛页面与内链死角:蜘蛛为什么一直找不到这些 URL

有些页面明明存在、也能正常打开,却长期没有搜索蜘蛛访问,问题往往不在页面本身,而是它没有任何站内链接入口。本文梳理孤岛页面的几种典型形态、用日志与内链交叉自查的方法,以及补链时更实用的处理顺序。

搜索抓取

孤岛页面与内链死角:蜘蛛为什么一直找不到这些 URL

站里偶尔会出现这样的页面:URL 能正常打开,内容也不算差,但翻服务器日志,几个月都找不到一次搜索蜘蛛的访问记录。这时候很多人第一反应是去检查页面质量,其实更常见的原因只有一句话——站内没有任何一条可以抓取的链接指向它。这类页面通常被称为孤岛页面,它的问题不在页面,而在路径。

什么算孤岛页面

判断标准可以简单一点:如果把站内所有可抓取的链接看成一张网,那么这个 URL 在这张网里的入链数是零,或者入链数极少且都集中在很难被爬到的位置。它可能出现在 Sitemap 里,可能被后台的运营列表掌握,但蜘蛛从首页出发,顺着链接一层层走,永远走不到它。

需要注意的是,孤岛页面和“质量差的页面”不是一回事。一个内容完整、结构清晰的文章页,同样可能因为缺一条内链而长期不被发现。

几种常见的死角形态

只写在 Sitemap 里,站内没有任何入口

Sitemap 是发现 URL 的补充渠道,不是替代渠道。如果一批页面的唯一来源就是 Sitemap,蜘蛛拿到地址后去抓一次,之后缺少内链支撑,重抓和深入都会很弱。Sitemap 能解决“知道有这个地址”,解决不了“这个地址在站内处于什么位置”。

链接由 JS 在渲染后才插入

首轮抓取拿到的 HTML 里没有这个链接,链接要等脚本执行后才出现在 DOM 中。这类入口在只有首轮抓取的情况下等于不存在,尤其是链接藏在折叠区域、懒加载模块或需要交互才展开的容器里时。

被 nofollow 或跳转包裹的入口

有些站内入口用的是带 rel=nofollow 的链接,或者用按钮加 JS 跳转代替 a 标签。前者等于告诉蜘蛛“别顺着这里走”,后者在解析层面根本不算链接。运营视角看它是个入口,抓取视角看它不是。

深层分页与筛选结果

列表页翻到第五页之后才出现的详情链接,本身就处在比较深的层级;如果再叠加上筛选、排序参数,入口的稳定性更差。老文章、老商品最容易被埋在这一层。

站外只有一次性入口

比如只在外链里出现过一次,站内没有对应的栏目页或聚合页。入口一旦失效或那个外链页面被改动,这个 URL 就彻底断了来源。

自查的三步交叉验证

  1. 看日志:按 URL 归组,把一段时间内蜘蛛访问过的地址列出来,找出“存在于站点、但从未出现在日志里”的那一批。
  2. 数入链:用站点抓取工具或自己写脚本跑一遍全站,统计每个 URL 在站内被链接的次数和所处的层级。
  3. 对 Sitemap:把 Sitemap 里的 URL 和内链统计结果放在一起比对,只出现在前者、不出现在后者的,基本就是候选名单。

三步做完,通常能拿到一份明确的清单,而不是靠感觉去猜哪些页面“可能有问题”。

修复的优先顺序

  • 先补上下文内链:从同主题的相邻页面加一条自然链接,比在首页堆一个入口更有效,也更容易长期保持。
  • 再降层级:给这批页面加一个可抓取的聚合页或栏目页,让它们从首页出发三到四次跳转就能到达。
  • 然后让 Sitemap 兜底:Sitemap 负责把地址交代清楚,内链负责把地址放进结构里,两者分工不同,别互相替代。
  • 最后检查入口本身:确认链接是 a 标签、可被抓取、不带 nofollow,且不依赖交互才出现。

几个容易忽略的细节

一是同一内容存在多个地址时,如果内链分散指向不同版本,每个版本拿到的入链都很少,反而更容易被当成孤岛。二是有页面被 noindex 却仍在内链中被当作入口,蜘蛛会跟着走,但不会把它当作有价值的连接点。三是 URL 大小写、带不带结尾斜杠这类细碎差异,会让同一条链接被拆成两种,入链统计看起来够用,实际被分散了。

补内链不是为了让页面被收录,也不是做了就一定有效果。它的作用是让地址处在可被发现、可被重复访问的路径上,剩下的交给内容本身和抓取节奏。