搜索抓取

孤儿 URL 与半孤儿 URL:没有内链的页面还能怎么被发现

站内没有内链指向的页面,往往只能靠 Sitemap 或外链被偶尔碰到。本文说明孤儿 URL 与半孤儿 URL 的区别、常见来源,以及用日志和爬虫做差集把它们找出来的方法,并给出补内链、合并、收敛三类处理顺序,顺带提醒抓取路径深度与服务器稳定性带来的影响。

搜索抓取

孤儿 URL 与半孤儿 URL:没有内链的页面还能怎么被发现

站内链接是搜索蜘蛛发现 URL 的主要通道,但总有页面掉在这张网之外:没有任何内链指向,只能靠 Sitemap 或外部链接偶尔被碰到。这类页面常被称为孤儿 URL,介于两者之间的则算半孤儿。

孤儿 URL 与半孤儿 URL 的区别

孤儿 URL:站内找不到任何指向它的可跟随链接,只能通过 Sitemap、外链或历史记录被发现。半孤儿 URL:站内有入口,但入口数量极少、位置很深,或者只存在于某个已经不再被访问的旧列表页里。

两者的共同点是抓取回访不稳定:链接越少、路径越深,蜘蛛重新走到的概率越低。

孤儿 URL 的常见来源

  • 活动页或专题页下线后,入口被移除,但页面本身仍然可以访问;
  • 筛选、排序、分页参数生成的组合地址,页面上不会互相链接;
  • 列表分页只展示前若干页,末页之后的 URL 失去入口;
  • CMS 草稿、测试页面误发布,未加入任何导航;
  • 改版时目录调整,旧路径保留但新导航不再指向;
  • 外链推广的落地页,站内没有反向入口。

怎么把孤儿 URL 找出来

  1. 从服务器日志里提取被请求过的路径集合,作为参照;
  2. 用爬虫工具抓取全站内链,得到“能被站内链接走到”的 URL 集合;
  3. 把 Sitemap 中的 URL 与前两个集合分别做差集,差集里往往就是孤儿或半孤儿;
  4. 再人工核对一次:有些页面是接口地址或静态资源,不需要处理。

这个对比不需要很复杂的工具,一次导出加一次抓取就能完成,关键是定期做,而不是只在上线时看一遍。

Sitemap 能替代内链吗

Sitemap 解决的是“告诉搜索引擎这里有这个地址”,它不传递上下文,也不说明页面之间的关系。只靠 Sitemap 存在的页面,抓取往往更零散,页面重要性也难以被判断。

Sitemap 是发现入口的补充,不是内链结构的替代品。能补内链的页面,优先补内链。

处理半孤儿页面的顺序

  • 先判断页面是否值得保留:有搜索需求、有转化价值的,才谈补入口;
  • 值得保留的,补一到两个稳定的站内入口,如相关推荐、栏目列表、归档页;
  • 内容重复或过时的,考虑合并到主页面,并设置好跳转;
  • 纯粹是参数组合产生的地址,可以用规范化或 robots 规则收敛,而不是逐个补链。

补内链时不必追求数量,一个位置合理、长期存在的入口,比散落在多个页面的临时链接更有意义。

抓取路径上的两个现实约束

第一是深度:孤儿页面通常位于目录末级,蜘蛛从首页出发需要经过多跳才能到达,任何一跳出现异常都会中断路径。第二是稳定性:如果服务器在抓取时段频繁返回 5xx 或超时,蜘蛛未必会一路重试到深层页面,这时再补内链效果也会打折。

因此,处理孤儿 URL 之前,先确认站点的主要入口响应正常、跳转链没有多余的中间页,把路径缩短,再谈补链。

一个小流程

  1. 每月导出一次日志路径与 Sitemap 地址;
  2. 与站内链接集合做差集,标记孤儿与半孤儿;
  3. 按保留、合并、下线三类分派;
  4. 对保留页面补入口,记录补链日期;
  5. 在下一次日志观察中,看这些地址是否出现新的抓取记录。

流程的价值在于让“有没有入口”变成一件可核对的事,而不是凭感觉判断页面是否被链接到。