列表頁和分頁往往是站点里數量最多、也最容易被忽略的一類地址。一個栏目有几百篇文章,就會顺带产生几十個翻頁地址;這些頁面既是用戶浏览的路径,也是蜘蛛發現新内容的主要入口。翻頁逻辑一旦寫得不讲究,轻則浪費抓取资源,重則让蜘蛛在無穷序列里打轉。
先弄清楚你有哪些列表頁
動手調整之前,先把列表類地址數一遍:栏目首頁、标簽頁、作者頁、搜尋结果頁、按時間归档頁、按分類组合的篩選頁,都属于這一類。接着分個類,哪些是用戶真會用的,哪些只是系統顺带生成的。分完之後判断标准會清晰很多——给用戶用的頁面值得好好维護,系統顺带生成的頁面則要考虑是否该让蜘蛛訪問。
分頁常见的几種毛病
- 無限翻頁:第 200 頁、第 500 頁都能打開,内容早已没有實际價值,蜘蛛一頁頁爬過去,真正的新文章反而没被及时抓到。
- 翻頁地址不固定:同一個列表既能用 /list?page=2,也能用 /list/page/2,還有带排序參數的第三種寫法,同一批内容被反复消耗抓取预算。
- “加载更多”只對用戶可见:按钮背後靠脚本拼接,地址栏不變,蜘蛛按不到下一頁,列表後半部分基本不會被發現。
- 列表頁塞了太多摘要或全文:列表與詳情内容高度重复,蜘蛛要花更多時間判断谁才是主版本。
- 翻到最後一頁仍有“下一頁”:用戶和蜘蛛都會点進一個空列表。
翻頁怎么實現,先做取舍
传统參數翻頁
结构清晰、可以直接被連結,是最省心的做法。要注意保持參數唯一,別让排序、每頁條數等參數组合出成百上千個變体。必要时可以在 robots.txt 中限制带排序參數的路径,或對這類地址做規范化處理。
“加载更多”與無限滚動
這類交互對用戶友好,但需要額外补一條抓取路径。常见做法是给每個翻頁狀態一個真實地址,或者保留一個“查看全部/下一頁”的普通連結,让不支持脚本的訪問者也能走到後面的内容。
一份可以照着做的自查清單
- 随机挑三個栏目,手動翻到第 5 頁,看地址有没有重复或跳變。
- 检查分頁連結是不是普通的 a 标簽,能否直接複製打開。
- 確認最後一頁之後不再輸出“下一頁”連結。
- 看列表頁摘要字數是否過多,尽量只保留标题、時間和一两行简介。
- 检查空列表頁(篩選後無结果)返回的狀態,不要用 200 硬撑。
- 在服務器日誌里看看蜘蛛是否長期停留在翻頁地址上,詳情頁抓取量是否被挤压。
- 评估标簽頁與归档頁的總量,過多的低價值列表考虑收敛。
几個容易被忽略的细节
分頁地址的頁碼最好從 1 開始,並且不要让 /list 和 /list?page=1 两種形式同时存在。列表頁的标题可以带上頁碼或類別,但不要简單複製栏目名,否則几十個頁面标题會完全一样。另外,如果站点會随时插入新内容,第 2 頁之後的内容會整体後移,保持長期稳定的抓取节奏,比一次性把所有頁碼提交出去更有意义。
把分頁当成站点结构的一部分来管理,而不是模板自動生成的副产品,抓取路径會清楚很多。
分頁自查的目标不是让每一頁都被抓取,而是让蜘蛛把有限的時間花在真正值得收錄的地址上。