蜘蛛池的入口頁经常做成列表頁或分頁目錄,目的是让蜘蛛顺着連結一路發現更多 URL。但蜘蛛不是無底洞,它會在某個位置停住。理解它為什么停、在哪里停,比盲目增加分頁數量更有用。
蜘蛛為什么不會一直翻下去
分頁的本质是把一批 URL 拆成多頁展示。蜘蛛每翻一頁,就多一次請求、多一层抓取深度。抓取预算有限时,蜘蛛會優先處理它認為重要的頁面。如果分頁連結長得都差不多、内容也只是序号變化,蜘蛛很快會判断繼續翻的價值不高。
另外,分頁頁面本身容易产生重复内容。同一列表的第 2 頁、第 3 頁,标题和描述如果只差一個數字,蜘蛛可能只保留其中一两頁,其余不再深入。這不是惩罚,而是抓取效率的自然選擇。
分頁連結的几種常见寫法
- 静態路径分頁:如 /list/2/、/list/3/,路径清晰,蜘蛛容易识別层級,也方便控制深度。
- 查询參數分頁:如 ?page=2、?p=3,實現简單,但參數過多时蜘蛛可能降低抓取意愿,也容易和篩選參數混在一起。
- JavaScript 加载更多:点击後才請求下一頁,蜘蛛不一定触發,分頁連結可能只存在于脚本里,發現效率最低。
- rel=next/prev:這是给蜘蛛的分頁提示,但不是强制指令。它可以帮助蜘蛛理解序列關系,不能替代可抓取的連結。
如果入口頁的主要任務是 URL 發現,静態路径分頁通常更稳妥。參數分頁則要注意不要把排序、篩選、會话 ID 等無關參數混進分頁連結。
列表頁里放多少連結合适
一頁放多少條連結,没有统一标准。放得太少,蜘蛛要多翻很多頁;放得太多,單頁体积變大,蜘蛛解析和传递權重的效果會被稀释。常见做法是让首屏能看到主要連結,整頁控制在几十到一百多條之間,具体看頁面体积和服務器响應。
更重要的是連結的位置。正文区域的連結比頁脚堆叠的連結更容易被蜘蛛当作有效路径。如果所有分頁連結都塞在頁脚,蜘蛛仍然能抓,但優先級會低一些。
控制蜘蛛翻頁深度的几個做法
- 限制分頁總頁數,只保留最近若干頁可翻,更早的分頁可以归档到單獨入口,避免蜘蛛在舊列表里耗尽预算。
- 保留上一頁、下一頁和首尾頁連結,让蜘蛛有明确的路径感,减少迷路。
- 對分頁頁做 canonical 时,要明确指向第一頁還是自身。如果每頁内容差异明顯,指向自身更合适;如果只是排序不同,可以指向主列表頁。
- 在 sitemap 里只放重要的列表頁和第一頁,不必把每一頁分頁都提交,让蜘蛛自己决定是否深入。
- 用日誌观察蜘蛛實际翻到了第几頁,再决定是增加還是收紧分頁。
几個容易踩的坑
- 無限滚動:用戶滚動才加载新内容,蜘蛛看不到後續連結,等于把後半段 URL 藏了起来。
- 空列表頁:翻到後面没有内容,却仍返回 200,蜘蛛會反复訪問這些空頁,浪費抓取次數。
- 重复标题:所有分頁标题完全一样,蜘蛛难以判断哪一頁更有價值。
- 分頁連結带會话參數:同一頁出現多個 URL 版本,蜘蛛可能重复抓取。
- 分頁返回 404 或 500:蜘蛛會降低對整站的抓取频率,入口頁的發現效率也會受影响。
分頁不是越多越好。對蜘蛛池来说,让蜘蛛用有限的抓取次數走到真正有價值的入口頁,比让它翻完所有列表更有意义。
最後,建议把分頁当成一個需要持續观察的环节。通過日誌看蜘蛛的訪問路径、停留頁數和重复訪問情况,再調整每頁連結數、分頁寫法和總頁數。不同站点、不同蜘蛛的节奏不一样,照搬固定數值往往效果有限。