很多人看抓取資料只看總量,忽略了另一個维度:蜘蛛抓到的頁面,大多停在离入口几跳的位置。抓取深度决定了站点里哪些部分長期處于阴影中——不是被禁止,而是根本没被走到。
跳數是什么,為什么它比“层級”更贴近現實
目錄层級是文件系統的概念,跳數是從入口頁出發,经過几次連結点击才到達。两者经常不一致:一個 /a/b/c/d/ 形式的 URL 可能首頁直接鏈過去,只有一跳;一個浅目錄頁面可能藏在三級導航里,要四跳才摸到。
蜘蛛對每個站点的抓取額度有限,越往深處走,單位收益越低,所以它會優先把額度花在容易回訪、更新频繁、入口多的頁面上。
深度是怎么被消耗掉的
- 導航和面包屑只覆盖到中間层,最底层頁面只能靠列表頁往下带;
- 列表分頁到某個位置断了連結,後面的内容自然没人走;
- 重要頁面只出現在某個交互展開後才生成的連結里;
- 深层頁面之間没有横向互鏈,彼此都是死胡同。
Sitemap 能补深度,但补不了全部
Sitemap 提供的是“這個 URL 存在”這條信息,可以缩短發現時間,但它不改變蜘蛛對頁面重要性的判断。把一個孤立的深层頁塞進 Sitemap,蜘蛛可能来一次,之後因為没有任何内鏈指向它,回訪频率會很低。
把 Sitemap 当成兜底,而不是主干。主干仍然是可点击、可延續的内鏈路径。
服務器在深度抓取里扮演的角色
深层頁面的抓取往往排在队列後面,這意味着它們更容易撞上服務器狀態不佳的时段。間歇性的 5xx、响應時間忽長忽短,會让蜘蛛在下一次調度时更保守:先抓浅层、高频更新的頁面,深层頁面被推後甚至暂时搁置。
所以服務器稳定性對抓取的影响並不均匀,浅层頁面容忍度高,深层頁面最吃亏。如果你發現日誌里深层 URL 的抓取間隔越来越長,先看看那段時間的响應碼分布。
怎么判断深度出了問题
- 按跳數给日誌里的 URL 分组,看每個深度段的抓取量占比;
- 找出“有 Sitemap 记錄、有内容更新、但没有内鏈指向”的頁面;
- 检查深层頁面的抓取狀態碼,是否集中在 5xx 或超时;
- 观察同一深度的頁面之間,抓取次數差异有多大。
几個不費力的調整
- 把重要但深的内容,在上一层頁面上给一個固定的文字入口;
- 同類深层頁面互相連結,形成一條可延續的路径,而不是各自孤岛;
- 列表翻頁保留可抓取的連結,別只留“加载更多”按钮;
- Sitemap 里保留這些頁面,但不要把它的存在当成唯一入口;
- 服務器告警別只看首頁可用性,深层路径的响應時間也要盯。
深度不是越低越好,而是不要让重要的東西掉在没有路的地方。蜘蛛走的路,本质上是用戶点得到的路。