先把“抓不到”和“發現路径太窄”分開
不少站点遇到頁面長期不出現时,第一反應是怀疑服務器或抓取通道出了問题。實际排查中更常见的情况是:頁面本身可正常訪問,响應碼、内容都正常,只是站内几乎没有指向它的入口。搜尋蜘蛛發現 URL 主要依靠三條路径:已抓取頁面上的連結、Sitemap 之類的补充入口、以及歷史抓取记錄。其中内鏈是持續且稳定的一环,Sitemap 更接近一份清單,只负责告知存在。
孤岛頁面的几種典型長相
- 只能通過站内搜尋框到達的结果頁,没有對應的静態列表入口;
- 位于分頁末尾,但分頁被“只展示前 N 頁”的逻辑截断;
- 只在某個篩選组合下出現,預設列表里看不到;
- 依赖 JS 点击事件跳轉,原始 HTML 中没有可解析的連結标簽;
- 連結被 nofollow 或 onclick 包裹,存在但不作為發現入口;
- 内容頁之間没有相關推荐,也没有明确的分類归属。
用两套資料交叉定位
- 抓取日誌:按 URL 聚合抓取次數,把長期為 0 或只有一两次的记錄單獨列出;
- 抓取統計:查看按响應碼和按目錄的分布,對比目錄下的頁面數量與實际被抓取數量;
- 站内連結图:從首頁出發爬一遍站内,統計每個 URL 的入鏈數量和最短点击深度;
- 把“日誌中未出現”和“連結图中入鏈為 0”两個集合取交集,這批 URL 基本就是發現盲区。
這里要提醒一点:入鏈為 0 並不等于一定不被抓取,外鏈和 Sitemap 也可能带来訪問,但這類入口不稳定,頁面更新後很难被再次發現。
补入口的几種做法
不必為每個頁面强行堆連結,重点是补齐层級和聚合入口,让结构本身说得通。
- 分類頁、标簽頁给出完整的分頁入口,不要只保留前几頁;
- 列表頁增加一種排序入口,例如按時間或按热度,让老内容有再次出現的路径;
- 内容頁加入相關推荐與上下篇,形成同主题的横向连接;
- 對确實重要但入口稀少的頁面,放進栏目聚合頁或专题頁;
- 锚文本尽量使用頁面主题词,避免“点击這里”“更多”這類無信息文本。
Sitemap 是补充,不是替代
Sitemap 能帮助蜘蛛知道某個 URL 存在,但它不保證被抓取,也不替站点表達结构關系。如果站内連結图本身就是稀疏的,Sitemap 里塞入再多地址,實际覆盖比例也很难提升。比較合理的分工是:内鏈保證主干连通,Sitemap 覆盖那些确實难以通過連結到達的頁面。两者對不上时,優先修内鏈,而不是繼續扩大 Sitemap。
服務器稳定性會影响發現节奏
如果入口頁经常返回 5xx、响應超时,或者响應時間波動明顯,蜘蛛對同一路径的抓取會趋于保守,新增入口被驗證的周期也會被拉長。因此补内鏈的同时,顺带检查入口頁的可用性:狀態碼是否稳定、首字节時間是否在合理区間、是否有規則誤伤了正常抓取。
調整後的核對节奏
改完不要立刻下结论,留出两到四周观察期,對比調整前後的同一目錄抓取 URL 數量、抓取频次分布,以及新頁面首次被抓取的時間間隔。如果入口數量增加了,但抓取分布几乎没有變化,多半是入口位置太深,或者頁面本身缺少足够的價值信号。
發現缺口往往不是技術故障,而是站内结构没有给出足够清晰的路径。先把連結图理顺,再谈其他手段。