站内大部分新 URL 不是從首頁直接暴露的,而是藏在列表頁、分頁、篩選结果里。分頁連結的质量,基本决定了蜘蛛沿着列表往下走的深度。這篇文章只讨论一件事:分頁這一环怎么影响 URL 發現。
列表頁是 URL 發現的主干道
典型的电商或内容站结构是:首頁到频道頁,再到列表頁,最後到詳情頁。詳情頁數量往往上萬,入口却只有几十個列表頁。蜘蛛能不能把這些詳情頁找出来,取决于列表頁给它留了多少條可走的路。
列表頁一般承担两個任務:把目前頁的詳情頁連結交出去,以及把「下一頁」的地址交出去。第二個任務经常被忽略,结果是第一頁被抓了,第二頁之後的 URL 迟迟不出現。
分頁連結的几種形態
- 獨立地址:/list/page/2/ 或 /list?page=2,每個分頁都有稳定 URL,最容易被抓。
- 數字分頁:頁面底部列出 1 2 3 一直到 10,超過部分用省略号,深處頁面需要額外入口。
- 「加载更多」按钮:点击後由 JS 追加内容,首轮 HTML 里可能只有第一批資料。
- 無限滚動:滚到哪里加载到哪里,地址栏通常不變,蜘蛛無法把内容對應到獨立 URL。
判断标准很简單:把頁面 HTML 抓下来,禁用 JS,看分頁地址是否寫在 a 标簽的 href 里。只有点击事件、没有 href,蜘蛛基本走不過去。
蜘蛛為什么不會一直往下翻
即使連結都在,越深的分頁拿到的抓取资源越少。原因不复杂:
- 第 5 頁之後的内容與前面高度相似,重复度高;
- 深层分頁往往排序靠後,頁面自身權重低;
- 抓取预算有限时,蜘蛛優先保證新内容和重要路径。
所以現實目标不是让蜘蛛抓完所有分頁,而是保證關键詳情頁有一條稳定、短的可達路径。如果某批内容只能從列表第 30 頁進入,那它被發現的概率本来就不高,應该考虑用其他入口补上。
三個常见的坑
一、分頁連結被截断
很多模板只輸出前 10 頁,之後就没有「下一頁」了。這时第 11 頁之後成了半孤岛:用戶能從 URL 拼出来,蜘蛛却找不到入口。可以在列表底部保留一個「下一頁」和「最後一頁」連結,成本很低。
二、排序與篩選參數叠加
同一個列表加上 ?sort=price、?brand=a、?page=3,组合數量會迅速膨胀。這類頁面大多不值得被抓,也没有必要全部保留為可索引地址。更稳妥的做法是:篩選结果頁允许抓取但不索引,通過 canonical 或 meta robots 明确指向主列表;分頁本身則保留自指 canonical,不要指向第一頁,否則蜘蛛會認為後續頁是重复内容而不再進入。
三、分頁地址不稳定
如果每次訪問分頁都生成带随机參數的地址,或者翻頁通過 POST 返回内容,蜘蛛拿到的 URL 無法复現。分頁地址應该是可复現、可分享、參數固定的形式。
检查清單
- 禁用 JS 後,分頁連結是否仍是可点击的 href;
- 列表底部是否存在「下一頁」或「末頁」入口;
- 分頁 canonical 是否指向自身;
- 篩選、排序參數是否被明顯区分為不索引;
- 重要詳情頁是否都有非分頁入口,比如专题頁、相關推荐、Sitemap;
- 抓取日誌里,分頁 URL 的抓取频次是否與詳情頁相当,還是几乎為零。
分頁不是给蜘蛛爬到底用的,是给詳情頁提供第一條路径。路径够短、够稳定,比頁數够多更重要。