搜尋抓取

孤岛頁面與内鏈死角:蜘蛛為什么一直找不到這些 URL

有些頁面明明存在、也能正常打開,却長期没有搜尋蜘蛛訪問,問题往往不在頁面本身,而是它没有任何站内連結入口。本文梳理孤岛頁面的几種典型形態、用日誌與内鏈交叉自查的方法,以及补鏈时更實用的處理顺序。

搜尋抓取

孤岛頁面與内鏈死角:蜘蛛為什么一直找不到這些 URL

站里偶尔會出現這样的頁面:URL 能正常打開,内容也不算差,但翻服務器日誌,几個月都找不到一次搜尋蜘蛛的訪問记錄。這时候很多人第一反應是去检查頁面质量,其實更常见的原因只有一句话——站内没有任何一條可以抓取的連結指向它。這類頁面通常被称為孤岛頁面,它的問题不在頁面,而在路径。

什么算孤岛頁面

判断标准可以简單一点:如果把站内所有可抓取的連結看成一張網,那么這個 URL 在這張網里的入鏈數是零,或者入鏈數极少且都集中在很难被爬到的位置。它可能出現在 Sitemap 里,可能被後台的运营列表掌握,但蜘蛛從首頁出發,顺着連結一层层走,永遠走不到它。

需要注意的是,孤岛頁面和“质量差的頁面”不是一回事。一個内容完整、结构清晰的文章頁,同样可能因為缺一條内鏈而長期不被發現。

几種常见的死角形態

只寫在 Sitemap 里,站内没有任何入口

Sitemap 是發現 URL 的补充渠道,不是替代渠道。如果一批頁面的唯一来源就是 Sitemap,蜘蛛拿到地址後去抓一次,之後缺少内鏈支撑,重抓和深入都會很弱。Sitemap 能解决“知道有這個地址”,解决不了“這個地址在站内處于什么位置”。

連結由 JS 在渲染後才插入

首轮抓取拿到的 HTML 里没有這個連結,連結要等脚本执行後才出現在 DOM 中。這類入口在只有首轮抓取的情况下等于不存在,尤其是連結藏在折叠区域、懒加载模块或需要交互才展開的容器里时。

被 nofollow 或跳轉包裹的入口

有些站内入口用的是带 rel=nofollow 的連結,或者用按钮加 JS 跳轉代替 a 标簽。前者等于告诉蜘蛛“別顺着這里走”,後者在解析层面根本不算連結。运营视角看它是個入口,抓取视角看它不是。

深层分頁與篩選结果

列表頁翻到第五頁之後才出現的詳情連結,本身就處在比較深的层級;如果再叠加上篩選、排序參數,入口的稳定性更差。老文章、老商品最容易被埋在這一层。

站外只有一次性入口

比如只在外鏈里出現過一次,站内没有對應的栏目頁或聚合頁。入口一旦失效或那個外鏈頁面被改動,這個 URL 就彻底断了来源。

自查的三步交叉驗證

  1. 看日誌:按 URL 归组,把一段時間内蜘蛛訪問過的地址列出来,找出“存在于站点、但從未出現在日誌里”的那一批。
  2. 數入鏈:用站点抓取工具或自己寫脚本跑一遍全站,統計每個 URL 在站内被連結的次數和所處的层級。
  3. 對 Sitemap:把 Sitemap 里的 URL 和内鏈統計结果放在一起比對,只出現在前者、不出現在後者的,基本就是候選名單。

三步做完,通常能拿到一份明确的清單,而不是靠感觉去猜哪些頁面“可能有問题”。

修复的優先顺序

  • 先补上下文内鏈:從同主题的相邻頁面加一條自然連結,比在首頁堆一個入口更有效,也更容易長期保持。
  • 再降层級:给這批頁面加一個可抓取的聚合頁或栏目頁,让它們從首頁出發三到四次跳轉就能到達。
  • 然後让 Sitemap 兜底:Sitemap 负责把地址交代清楚,内鏈负责把地址放進结构里,两者分工不同,別互相替代。
  • 最後检查入口本身:確認連結是 a 标簽、可被抓取、不带 nofollow,且不依赖交互才出現。

几個容易忽略的细节

一是同一内容存在多個地址时,如果内鏈分散指向不同版本,每個版本拿到的入鏈都很少,反而更容易被当成孤岛。二是有頁面被 noindex 却仍在内鏈中被当作入口,蜘蛛會跟着走,但不會把它当作有價值的连接点。三是 URL 大小寫、带不带结尾斜杠這類细碎差异,會让同一條連結被拆成两種,入鏈統計看起来够用,實际被分散了。

补内鏈不是為了让頁面被收錄,也不是做了就一定有效果。它的作用是让地址處在可被發現、可被重复訪問的路径上,剩下的交给内容本身和抓取节奏。