蜘蛛發現 URL 的方式有很多,但對绝大多數站点来说,最主要的一條路仍然是内鏈:從一個已知的入口頁出發,顺着頁面上的連結一层层往外走。這個“走”的過程有先後顺序,也有距离概念,而距离往往决定了某個 URL 要排多久才能被訪問到。
点击距离:從入口到目标頁要跳几层
点击距离指的是從種子頁面(通常是首頁或某個已被抓取的栏目頁)出發,到達目标 URL 所需的最少連結跳數。首頁是第 0 层,首頁直接鏈出去的頁面是第 1 层,再往下是第 2 层,以此類推。
它之所以重要,是因為蜘蛛的抓取顺序大体沿着連結结构推進:先處理距离近、被多個頁面引用的 URL,再往深處扩散。当抓取资源有限时,深處的頁面更容易被排在後面。
為什么深了就容易慢
- 路径更長,重复訪問更多:每多一层,蜘蛛就要多走一步,中間的列表頁、聚合頁也會被反复請求。
- 信号更弱:深頁通常外鏈少、被其他頁面引用次數也少,蜘蛛對它的關注自然低一些。
- 断点更容易出現:路径越長,中間任何一环出問题(某頁返回错誤、連結被前端隐藏、分頁被屏蔽),後面的頁面就可能整片抓不到。
- 服務器抖動时最先被牺牲:响應變慢或偶尔超时,蜘蛛單次能完成的請求數會减少,深處的 URL 往往最先被放下。
常见的“變深”结构
- 導航和列表依赖前端渲染,HTML 里没有可跟随的連結。
- 把所有内容都塞進标簽頁、搜尋结果頁,靠篩選參數拼出路径。
- 只在 Sitemap 里提交 URL,站内没有任何入口指向它。
- 分頁從第 3 頁開始就不再輸出可抓連結。
這些問题單獨看都不致命,叠在一起就會让一部分 URL 長期停留在已發現但很少被抓的狀態。
把重要 URL 的路径压短
- 在首頁或核心栏目頁给出稳定入口,不要让重要頁面只能靠站内搜尋找到。
- 用好面包屑和相關推荐,让詳情頁之間互相连通,而不是只依赖上級列表。
- 分頁保留普通的 a 連結,並让“下一頁”始终可達,避免後面几頁變成孤岛。
- Sitemap 可以作為补充入口,但不能代替内鏈;两者指向一致时最稳。
- 如果确實需要多級结构,至少让每一級都有横向連結可以绕過去。
怎么確認深度是否合理
可以拿服務器日誌按目錄統計抓取次數,再對照站内结构看:抓取集中在第 1、2 层,第 3 层以後几乎没有請求,通常說明路径過深或者中間断了。也可以用爬取工具從首頁出發模拟一遍,看目标 URL 在第几跳出現、有没有根本走不到的情况。
点击距离不是越短越好,而是让该被發現的頁面都有一條不断掉的通路。层級本身不可怕,可怕的是路径上某一环悄悄失效。
抓取路径的調整通常不會立刻看到變化,需要观察一段時間的日誌再判断。把结构理顺、把入口补上,比反复提交 URL 更有實际意义。