搜尋抓取

孤岛頁面與抓取入口:没有内鏈的 URL 该怎么被蜘蛛找到

Sitemap 里有地址不等于蜘蛛能找到。本文讲孤岛頁面的常见来源、用日誌和站内連結統計把它們找出来的方法,以及通過内鏈、聚合頁和面包屑把 URL 接回主路径的思路,並說明改造後该观察哪些抓取信号。

搜尋抓取

孤岛頁面與抓取入口:没有内鏈的 URL 该怎么被蜘蛛找到

很多站点在排查抓取問题时,會先看 Sitemap、再看日誌,最後才發現一個尴尬的情况:某些 URL 明明寫在 Sitemap 里,服務器也能正常返回 200,但翻遍全站的内鏈,没有任何一個可点击的入口指向它。這類頁面通常被称為孤岛頁面,它們不是打不開,而是没人带着蜘蛛走過去。

為什么内鏈往往比 Sitemap 更早带来抓取

Sitemap 更像一份清單,它告诉蜘蛛這些地址存在,但不保證蜘蛛會按顺序、按時間把每一行都走一遍。内鏈不一样,它是蜘蛛在渲染頁面时顺着 href 一路走出来的路径,属于站点结构的一部分。一個 URL 被多個相關頁面連結,意味着它處在一條真實的浏览路径上,被發現的概率和频次通常都會更稳定一些。

換句话说,Sitemap 解决的是交代清單,内鏈解决的是铺路。两者不冲突,但清單不能替代路。

孤岛頁面通常是怎么产生的

  • 歷史活動頁、专题頁下线後没有做 301,也没有從栏目里移除連結,最後連結被删、頁面還在。
  • 批量生成的标簽頁、篩選頁,只在某一次改版中出現過入口,改版後入口消失。
  • 後台導出的資料頁、接口生成的詳情頁,只能靠直接訪問 URL 到達。
  • 分頁翻到很後面的列表頁,前面的頁面已经不再連結過去。
  • 只在 JavaScript 渲染後才插入的連結,静態 HTML 里看不到。

這些頁面的共同点是:能返回内容,但在站内找不到一條稳定、可点击的到達路径。

怎么把孤岛頁面找出来

  1. 日誌與 URL 清單比對。把 Sitemap、資料库里的 URL 和一段時間内的抓取日誌做差集,長期没有被抓、也没有被訪問的地址,多半就是孤岛。
  2. 做一次站内連結統計。用爬虫工具從首頁出發抓一遍,看哪些 URL 出現在 Sitemap 里却没有出現在任何一次抓取的連結列表中。
  3. 区分無内鏈和内鏈很深。有的頁面只是层級偏深,仍然能被走到;真正的孤岛是完全没有任何入鏈。
  4. 確認狀態碼和渲染方式。排除掉 404、301 和必须执行脚本才出現的連結,避免把技術問题誤判成结构問题。

把孤岛頁面接回主路径的常见做法

  • 补一條语义相關的内鏈。從内容相關的文章、同級頁面里加自然連結,比在頁脚堆連結更有效。
  • 做聚合入口。用列表頁、专题頁、标簽頁把同類 URL 收拢,再让聚合頁從栏目或導航可達。
  • 用好面包屑和上下級導航。让每個詳情頁都有明确的上一层出口,蜘蛛顺着层級就能走回来。
  • Sitemap 作為补充。给确實不适合出現在導航里的頁面保留 Sitemap 位置,同时接受它被發現得慢一些。
  • 控制孤岛的數量。如果批量頁面注定没有入口,就要考虑它們是否真的需要對外可訪問。
内鏈改造不追求一次到位,先让重要頁面從零入鏈變成至少一條稳定入鏈,比一次性堆几十個連結更稳妥。

改造之後看什么

改完之後不要只看收錄數量。可以先观察抓取日誌里這些 URL 的出現频次、抓取时返回的狀態碼,以及抓取後是否有新的連結被带出来。如果一段時間内仍然只有零星抓取,就要回头检查入鏈的位置是否足够靠前、是否被渲染出来、頁面本身是否值得抓。

服務器稳定性同样會影响结果:入口頁响應慢或者間歇性返回 5xx,蜘蛛走到一半就断了,後面的孤岛自然更没机會被發現。所以内鏈梳理最好和稳定性检查放在一起做。

孤岛頁面不是靠提交就能一劳永逸解决的,它更像是站点结构里漏掉的几段路。把路补上,Sitemap 和主動提交才有意义。