很多站点把精力放在首頁有多少個外鏈、首頁能带出多少個入口,却很少追問一句:蜘蛛顺着這些入口走下去之後,能不能顺利到達真正需要被發現的頁面。抓取路径是一條從入口到詳情頁的连續鏈路,導航、面包屑、列表頁和正文内鏈共同决定了這條鏈路是通畅還是中途断掉。
抓取路径的起点不止首頁
蜘蛛進入站点的方式有很多種:首頁、栏目頁、Sitemap、外鏈指向的深层頁面,甚至是歷史遗留的某個 URL。這些入口進入之後,都會沿着頁面上的連結繼續向外扩散。因此判断抓取路径是否合理,不能只看首頁,而要看每一類入口進入後,能在多少步之内覆盖到核心内容。
可以用一個简單的观察方法:從任意一個常见入口出發,记錄到達最重要的那批頁面需要点击几次。如果普遍需要四步以上,或者必须经過參數篩選頁才能到達,那這條路径就偏長,容易在扩散過程中被提前截断。
主導航决定第一层目錄的宽度
主導航是站点内被蜘蛛最频繁訪問的連結集合,它基本决定了第一层栏目能被以多快的速度發現。導航里放什么、放多少個,直接影响後續的扩散效率。
常见的導航問题
- 導航項寫成图片或依赖脚本渲染,頁面源碼里看不到可以被跟随的連結。
- 導航里的連結指向带參數的跳轉地址,而不是栏目本身的規范 URL。
- 導航項過多且混杂,把临时活動頁、专题頁和長期栏目放在同一层,稀释了稳定的入口。
- 導航在不同頁面模板下不一致,導致同一批頁面之間存在互相矛盾的第一层入口。
處理方式並不复杂:把長期稳定的栏目留在主導航,把时效性内容放到栏目内部的运营位;确保導航連結在 HTML 源碼中直接可见,並指向規范的、不含多余參數的地址。
面包屑承担的是路径回填
面包屑的價值不在于给用戶看,而在于為每個詳情頁提供一條指向上級栏目的稳定連結。当列表頁或導航因為改版、翻頁、參數變化而暂时失效时,面包屑往往是最後一條仍然有效的上行路径。
- 面包屑的每一級都應该是真實存在的可抓取頁面,而不是不可訪問的分類名。
- 层級顺序要和目錄结构一致,避免出現首頁、子類、父類、詳情這種颠倒结构。
- 不要在面包屑中使用會跳轉到搜尋结果頁的連結,那會把抓取引向無限组合。
列表頁與詳情頁之間的鏈路
列表頁是站内最主要的入口分發点。它的翻頁、排序、篩選都可能产生大量變体 URL,如果没有控制,蜘蛛會在列表层反复徘徊,迟迟進不到詳情頁。
- 保證第一頁列表在 HTML 中直接輸出足量的詳情頁連結,而不是等用戶滚動後再加载。
- 翻頁連結尽量使用可抓取的 a 标簽,而不是按钮或無限滚動。
- 篩選和排序參數如果會生成新 URL,用 robots 規則或參數規范化的方式收敛,避免形成组合膨胀。
- 列表頁的更新時間要與實际内容更新保持一致,便于蜘蛛判断何时值得回訪。
用日誌驗證路径是否成立
路径设計得再合理,也需要用真實資料驗證。抓取日誌里能直接看到蜘蛛到達了哪些地址、訪問频次如何、哪些頁面從未被訪問過。把日誌按目錄和层級归類,就能看出入口衰减發生在哪一层。
如果某一层目錄的抓取量明顯低于上一层,而再下一层却有正常抓取,通常說明中間那一层存在入口缺失或連結不可见的情况,而不是蜘蛛不愿意抓。
落地检查清單
- 從首頁出發,用三步以内能否到達核心詳情頁。
- 主導航、面包屑、列表頁三處的連結是否都指向規范 URL。
- 是否存在只能通過站内搜尋或參數頁到達的内容。
- 日誌中是否有整层目錄長期零抓取的情况。
- 面包屑是否覆盖每個詳情頁,且层級與目錄一致。
抓取路径本质上是站点结构在蜘蛛视角下的投影。把導航、面包屑和列表頁這三條主要通道理顺,比反复提交 URL 更有效,也更容易在结构變動时保持稳定。