有些頁面内容扎實、服務器也稳定,但抓取日誌里長期看不到它的记錄。排查时容易先怀疑頁面质量,其實更常见的原因是爬虫压根没發現這個 URL。發現、抓取、索引是三個獨立环节,發現這一步断了,後面都不會發生。
先確認頁面是否存在真實可爬的入口
爬虫靠連結找 URL。如果一個頁面只存在于後台、站内搜尋结果或站点地图里,而没有從任何已收錄頁面連結過去,它被發現的概率會很低。
入口連結要是可解析的 a 标簽
检查渲染後的 HTML 中是否有带 href 的連結。用按钮加 onclick 跳轉、或者依赖前端路由在客戶端生成地址的做法,爬虫在渲染之前看不到這條連結。即使能渲染,也要看渲染是否稳定、是否在首屏就被触發。
入口連結有没有被指令挡住
内鏈上加了 rel 的 nofollow、指向被 robots.txt 屏蔽的路径、或者目标 URL 带大量無意义參數,都會让發現环节打折。nofollow 現在是提示而非绝對指令,但把它当預設手段用,會让一批頁面長期得不到像样的入口。
再看這些頁面在站内的层級深度
從首頁出發点几次能到目标頁,直接决定它被發現的優先級。层級過深的頁面往往要等很久,甚至等不到。
- 目标頁距离首頁的点击层數是多少,是否超過四到五层;
- 是否只能從分頁序列的後面几頁進入;
- 是否只挂在某一個低频栏目下,而该栏目本身也很少被訪問和抓取;
- 列表頁是否用「加载更多」替代了分頁連結,導致後續條目没有可爬入口。
孤岛頁面的几種常见形態
孤岛頁面指的是没有任何内鏈指向、同时缺少外鏈的頁面。它通常出現在這些场景:
- 批量生成的标簽頁、篩選结果頁,只在内部搜尋接口里能到達;
- 舊版頁面改版後仍可訪問,但導航已经不再指向;
- 活動頁、专题頁上线时没有挂到任何常设栏目;
- 多地区或多語言版本只靠相互之間的 hreflang 引用,缺少主站入口。
核對方式很直接:在站内搜尋里輸入頁面标题或關鍵詞,看结果是否只出現在站内搜尋接口中。如果站内搜尋本身對爬虫不可用,這類頁面基本等于孤立。
站点地图能补位,但不能替代内鏈
站点地图是發現环节的补充信号,提交了不代表一定被抓取,更不代表被索引。它能做的是把 URL 摆到爬虫面前,减少纯靠連結爬行带来的遗漏。真正影响抓取優先級的,還是頁面上可见的連結關系,以及頁面被点击、被引用的程度。
所以核對时不要把「已提交站点地图」当成發現环节已经解决。更實际的做法是:站点地图负责兜底,主導航、面包屑和正文内的相關内容模块负责提供常規入口。
發現环节的核對顺序
- 確認目标 URL 在渲染後的 HTML 中至少有一條可解析的 a 标簽連結;
- 检查這條連結是否被 nofollow、robots.txt 或登入墙挡住;
- 計算從首頁到目标頁的点击层數,判断是否属于深藏頁面;
- 用站内搜尋與站内連結检索,確認它是不是孤岛;
- 查看站点地图是否收錄该 URL,以及提交時間與最近一次被讀取的時間;
- 在抓取日誌里按 URL 過滤,確認是否有過任何一次請求记錄。
如果日誌里连一條請求都没有,問题基本停在發現环节,补内鏈入口通常比繼續優化頁面内容更有效。如果日誌里有請求但狀態異常,才需要往後看抓取和索引的部分。把顺序理清楚,能省掉很多無效的改版和内容重寫。
發現环节的關键不是把頁面推给爬虫,而是让它在站内有一條稳定、可解析、別太深的路径。