蜘蛛不會凭空知道站点里有哪些 URL,它靠的是連結一层层走。站内連結網絡中,有三處位置承担了大部分“指路”工作:主導航、面包屑和聚合頁。這三處设計得清楚,重要栏目和詳情頁就容易被反复走到;设計得随意,蜘蛛要么涌進大量低價值頁面,要么在某一层停住。
主導航:告诉蜘蛛站点的骨架
主導航是全站每個頁面都會出現的連結集合,蜘蛛訪問任意一個頁面,都能顺着它重新回到主要栏目,因此栏目頁通常拥有較高的抓取频率。几個容易出問题的地方:
- 導航連結由 JS 拼接,HTML 里只有空容器,蜘蛛第一轮抓取拿不到這些地址;
- 下拉菜單里的二級連結依赖悬停或点击才渲染,實际等同于隐藏;
- 導航條目堆到几十個,把首頁連結的注意力摊薄,也不利于蜘蛛分辨主次。
比較稳妥的做法是让主導航保持HTML 可解析,條目控制在合理數量,一級栏目尽量少而稳定,二級栏目放到栏目頁或聚合頁里去展開。
面包屑:层級回溯與结构表達
面包屑的價值不只是给用戶看。它给蜘蛛提供了一條從詳情頁回到栏目頁、再回到首頁的短路径,同时暗示頁面之間的從属關系。
常见寫法問题
- 只顯示目前頁名稱,前面几級用图标或省略号代替,連結實际缺失;
- 用列表加 JS 跳轉,爬虫解析不出 href;
- 面包屑层級與 URL 目錄层級不一致,等于给出两套结构信号。
如果站点做過改版或迁移,面包屑還是帮助蜘蛛重新接上舊路径的辅助手段之一——前提是它指向現行有效的地址,而不是一串跳轉的起点。
聚合頁:横向铺開 URL 的地方
栏目頁、标簽頁、专题頁、搜尋结果頁都属于聚合頁,它們的作用是让蜘蛛從一個入口触達几十上百個詳情頁。這里最需要克制的,是參數组合:排序、篩選、每頁條數、頁碼叠加在一起,能生成遠超實际内容量的 URL。
可行的處理方式:
- 篩選和排序參數用 canonical 指回不带參數的規范地址,或直接不让蜘蛛跟随;
- 分頁保留可点击的連結,不要只留一個“加载更多”按钮;
- 标簽頁设一個下限,内容量太少的不生成獨立頁面。
三處入口要互相配合
同一批 URL 從導航、面包屑、聚合頁三個方向被連結时,指向它的锚文本最好保持一致的核心词。锚文本飘忽不定,蜘蛛仍會抓,但對頁面主题的判断會變得模糊。另外,不要出現某一层入口全部指向低價值頁面、而真正有内容的詳情頁只能靠 Sitemap 兜底的情况——Sitemap 是补充,不是主力通道。
把站内連結想成一張地图:導航画主干道,面包屑画支路,聚合頁画街区。蜘蛛愿不愿意走遠,取决于這張图上有没有明确的路标,以及路标指向的是不是真實存在、能返回 200 的頁面。
上线後的简單核對顺序
- 關掉 JS,用抓取工具看導航和面包屑的連結是否還在 HTML 里;
- 抽查几個詳情頁,確認面包屑每一級都可点击且指向 200 狀態碼;
- 看聚合頁分頁,確認翻頁連結是 a 标簽而不是按钮事件;
- 對照服務器日誌,看蜘蛛是否真的訪問到了這些入口連結。
服務器稳定性同样影响這三處入口的價值:如果栏目頁响應慢或間歇性 5xx,蜘蛛即使知道路径,也會降低訪問频率。先把响應時間控制住,再谈结构調整,顺序會顺很多。