搜尋抓取

孤儿 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. 在下一次日誌观察中,看這些地址是否出現新的抓取记錄。

流程的價值在于让“有没有入口”變成一件可核對的事,而不是凭感觉判断頁面是否被連結到。