搜尋抓取

抓取死角:為什么有些頁面蜘蛛始终找不到入口

孤岛頁面指的是地址存在、服務器能正常返回,却没有任何站内連結指向的 URL。它們常在改版、下架和分頁調整中悄悄产生,抓取频次低,更新也不容易被發現。本文說明孤岛是怎么形成的,如何用日誌與内鏈清單對照排查,以及补入口、處理失效連結、用 Sitemap 兜底的具体做法。

搜尋抓取

抓取死角:為什么有些頁面蜘蛛始终找不到入口

站点里常有一類頁面:地址存在、服務器能返回 200、内容也是真的,但從首頁出發,顺着任何一條可见連結都走不到它。蜘蛛只能靠站外連結或 Sitemap 偶尔碰见,抓取频次低,内容更新也長期無人問津。這類頁面通常被称為孤岛頁面,它属于抓取路径上的死角,而不是内容本身有問题。

孤岛頁面是怎么产生的

大部分孤岛不是有意做出来的,而是在改版、下架、上线的過程中慢慢漏掉入口。

  • 列表入口被撤掉,詳情頁還在。調整栏目、隐藏某個分類时没有刪除頁面,也没有做 301 或 noindex,于是它只剩下一個地址。
  • 連結靠脚本生成。如果列表内容依赖前端渲染,蜘蛛第一次拿到的 HTML 里可能没有可跟随的 a 标簽,頁面就成了看不见的节点。
  • 只躺在 Sitemap 里。Sitemap 能告诉蜘蛛地址存在,但不等于给它一條站内路径。只靠 Sitemap 的頁面,抓取優先級和更新频率通常都偏低。
  • 分頁被截断。列表只保留前几頁連結,或者用“加载更多”替代翻頁連結,第五頁之後的内容就失去了入口。
  • 站内搜尋與篩選组合出的地址。這些頁面大多只對当次訪問有效,没有内鏈指向,也不适合作為正式入口。

怎么把孤岛找出来

排查思路不复杂:把“蜘蛛抓到的 URL”和“站内能走到的 URL”放在一起對照,差集就是重点。

  1. 從服務器日誌里筛出蜘蛛訪問的 URL,去重後得到一份抓取清單。
  2. 用抓取工具從首頁出發,按可跟随連結爬一遍,得到一份内鏈可達清單。
  3. 两份清單做差:日誌里有、站内走不到的,基本就是孤岛。
  4. 再核對這些 URL 的返回狀態:该保留的补入口,该合並的做 301,该退场的返回 404 或 410。

如果站点規模不大,也可以反過来看:在後台導出全部已發布 URL,逐個检查它是否至少被一個可抓取的頁面連結引用過。没有引用来源的,都值得复查。

把入口补回去

  • 补内鏈是最直接的方式。在相關的分類頁、专题頁、正文相關推荐里加上指向它的連結,锚文本寫清楚頁面讲的是什么。
  • 用面包屑和上下級連結建立位置感。让頁面知道自己挂在哪個栏目下,也让蜘蛛顺着栏目往回走。
  • 分頁連結保持可抓取。不一定要全部展開,但至少保證從第一頁能连到後續頁面,別只留一個“加载更多”。
  • 失效入口要善後。下架頁面不要只把連結删掉,改 301 到最接近的新頁面,或者明确返回 404、410。
  • Sitemap 作為兜底。它可以补上少量重要但内鏈不足的地址,但不建议用它来替代整站的内鏈结构。
Sitemap 提供的是地址清單,内鏈提供的是路径。蜘蛛更愿意沿着路径走,而不是每次都從清單里翻。

日常维護的检查习惯

孤岛是動態产生的:每次改版、每次下架、每次調整導航,都可能新增几個。比較省事的做法是把检查固定成习惯——上线新栏目时確認入口存在,下架内容时確認返回狀態,改版後重新跑一遍内鏈對照。這样抓取路径不會因為一次調整就被切断,站点也不會悄悄攒下一堆没人走得到的頁面。