搜尋抓取

蜘蛛找不到的頁面:孤岛 URL 是怎么形成的

孤岛頁面是指服務器上真實存在、站内却没有任何可達入口的 URL。蜘蛛只能靠連結和 Sitemap 發現地址,入口一旦断掉,頁面就長期停在未被抓取的狀態。本文梳理孤岛 URL 的常见来源,說明如何用抓取日誌確認是否真的没被抓,以及通過内鏈、Sitemap 與提交接口把地址重新送回抓取队列的具体做法。

搜尋抓取

蜘蛛找不到的頁面:孤岛 URL 是怎么形成的

有些頁面在服務器上好好的,你直接輸入地址能打開,但從首頁一路点過去永遠到不了它,也没有任何外鏈指向它,Sitemap 里可能還漏了。這類頁面在抓取层面接近“孤岛”:蜘蛛認识你的站点,却不知道這個地址的存在。

孤岛 URL 常见的几種来源

  • 只有站外連結指向:早期靠一篇外鏈被發現,外鏈删掉或失效後,站内又没补上入口,路径就断了。
  • 入口寫在脚本里:連結由 JS 拼接或依赖点击、悬停才生成,蜘蛛在渲染之前看不到這個地址。
  • 分頁太深:列表頁翻到第三十頁之後没有稳定入口,越靠後的詳情頁越难被走到。
  • 站内連結被整体屏蔽:指向它的内鏈全部带 nofollow,或者该目錄被 robots.txt 挡住,Sitemap 里却還列着。
  • 參數组合頁:篩選、排序生成的地址每次都不一样,入口只存在于某次点击的结果里。
  • 改版留下的舊地址:入口删了,301 也没做,頁面還在,但已经没有任何地方能走到它。

先確認是不是真的没被抓

不要凭感觉判断。用完整的 URL 去匹配服務器日誌,看有没有對應的請求记錄、狀態碼是多少、返回字节數是否正常。如果日誌里出現過,只是次數极少,那問题不在“發現”,而在抓取優先級;如果從头到尾一次都没出現,才更可能是入口問题。

站内的收錄查询只能当參考,结果不完整也不實时,不能作為唯一依據。尤其要注意区分:有些地址是蜘蛛請求了原始 HTML 但没执行脚本,頁面上真正的内容和連結都没被看到。

把 URL 重新送回抓取队列

  1. 加一條正文内鏈。從與它主题最接近、且已经被抓取的頁面里,用一段自然文字鏈過去,锚文本寫清楚這頁讲什么,不要用“点击這里”。
  2. 進 Sitemap。只放你确實希望被收錄的地址,別把篩選頁、重复頁一起塞進去。
  3. 给一個栏目級入口。让它出現在某個稳定栏目或聚合頁里,路径不依赖临时活動或一次性专题。
  4. 检查拦截面。robots.txt、頁面里的 meta robots、HTTP 头里的 X-Robots-Tag,三處都要過一遍,確認没有誤伤。
  5. 补提交。通過搜尋资源平台提供的提交方式把地址补進去,但它只是提示,替代不了真實入口。

内鏈结构上要守住的三件事

  • 每個想被收錄的頁面,至少有一條從首頁出發、可点击到達的路径。
  • 連結放在 HTML 里,不依赖交互或异步請求才出現。
  • 层級別太深,重要頁面多给几個入口,別只挂在一個角落。

修完之後观察什么

重点看抓取日誌里這個地址有没有重新出現、出現频次如何、抓取时返回的狀態碼和内容是否正常。變化不會立刻發生,一次改完就让它稳定几周,期間不要反复調整入口位置,否則很难判断是哪一步起了作用。

孤岛頁面很少是靠提交解决的,真正决定它能不能被發現的,還是站内那條通往它的連結。