栏目頁、标簽頁、商品列表、搜尋结果頁,這些统称為列表頁。它們是整站連結密度最高的地方,一個列表頁可能挂着几十條内容入口,蜘蛛顺着它往下爬,效率本该很高。但實际情况常常相反:分頁配置得随意,蜘蛛要么翻不到第二頁,要么在几百頁的翻頁里绕圈,真正有内容的内頁反而没被看到。
分頁這件事看起来只是加個「下一頁」按钮,但里面有几個容易踩的坑,值得單獨做一次自查。
先確認自己的分頁属于哪一種
不同實現方式,抓取表現差別很大,先對号入座:
- 路径式:/list/page/2/,每頁一個獨立可訪問地址,對蜘蛛最友好。
- 參數式:/list?page=2,能用,但要確認參數不會被服務器直接忽略或跳回第一頁。
- 按钮式加载更多:点击後由脚本追加内容,地址栏不變。
- 無限滚動:一直往下拉,理论上没有终点。
後两種對用戶体驗可能不错,但如果不做額外處理,蜘蛛往往只能拿到第一屏的那几條連結,剩下的内容相当于藏在门後。
分頁自查的六個要点
1. 翻頁連結要能被抓到
把「下一頁」做成 a 标簽、指向一個真實地址,這是最基础的要求。如果它只是一個绑定点击事件的按钮,脚本执行能力有限的抓取工具就會卡在第一頁。检查方法很简單:禁用浏览器 JavaScript 後打開列表頁,看看還能不能点到第二頁。
2. 分頁頁的 canonical 指向自己
有些站点图省事,把所有分頁頁的 canonical 都指向列表第一頁。這样做的结果是第二頁以後的内容信号被集中到第一頁,頁面上那些内頁連結的價值也被稀释。分頁頁是獨立地址、有獨立内容,canonical 應当指向自身。
3. 分頁頁的标题別整站一個样
如果第二頁、第三頁的标题和第一頁一字不差,蜘蛛很难判断這些頁面的区別。建议在标题或描述里带上頁碼或区間信息,让人和机器都能识別目前處于哪一段。這不是為了排名,而是為了让頁面之間有基本区分度。
4. 翻頁深度要有上限
一個條目很多的老栏目,翻到第一百頁时,内容往往已经是很久以前的舊信息,用戶几乎不會翻到那里,蜘蛛也没必要把時間花在那邊。可以考虑只保留前若干頁的分頁連結,更早的内容通過归档頁、時間轴或站内搜尋来触達。這样既保留可發現性,又避免抓取资源被大量低價值翻頁吃掉。
5. 加载更多要留一條退路
如果坚持用加载更多或無限滚動,至少补两件事:一是為每批内容准备對應的静態分頁地址,並在頁面上用普通連結暴露出来,常见做法是頁脚放一個「查看全部」;二是保證首屏 HTML 里就有足够數量的條目連結,不要全靠脚本注入。
6. 分頁頁内容別太空
只有一列标题加連結、没有任何摘要的列表頁,本身信息量就很低。适当补上摘要、時間、分類等字段,能让列表頁承担一部分信息传递的作用,也让蜘蛛在抓取时更容易判断頁面主题。
分頁不是要把所有内容都翻给蜘蛛看,而是要把值得看的内容放在更容易到達的位置。數量堆得多,不等于路径理得顺。
一份可以照着做的检查清單
- 随机挑三個列表頁,關閉 JavaScript,確認能否翻到第二頁。
- 查看分頁頁的 canonical,確認指向的是目前頁而不是第一頁。
- 對比第一頁和第三頁的标题、描述,看看是否有区分。
- 检查分頁連結是不是 a 标簽,還是只挂了点击事件。
- 統計某個老栏目的最大頁碼,评估是否需要设一個翻頁上限。
- 如果用加载更多,確認頁面上存在一個指向静態分頁的普通連結。
- 在服務器日誌里篩選列表頁地址,看蜘蛛訪問的是第几頁居多。
從日誌里驗證效果
检查完之後,隔一段時間回到服務器日誌,按列表頁路径做一次篩選。可以观察两点:蜘蛛對分頁頁的訪問是否集中在靠前的几頁;内頁的抓取量相比調整前有没有變化。抓取频次本身會受站点權重、更新节奏影响,短期波動不必過度解讀,看趋势就够了。
分頁是站内連結结构的一环,它不产生内容,但决定了内容被發現的路径顺不顺。把這一步理顺,往往比多開几個新栏目更實在。