分頁是抓取路径上的一段路
列表頁通常按時間、热度或分類排序,每頁放十几到几十條連結。蜘蛛第一次抓到列表頁时,會看到第一頁的詳情連結,以及一個指向第二頁的“下一頁”連結。它顺着這個連結繼續走,再發現第二頁的詳情連結,如此往复。對蜘蛛来说,分頁不是一條獨立的路径,而是從频道頁走向詳情頁的一段過渡路。這段路走得顺不顺,决定了它能不能在有限時間里摸到更深的内容。
反過来,如果分頁連結断掉,或者翻頁按钮只是一個不能直接抓取的控件,蜘蛛到了第一頁或第二頁就可能停住。後面的詳情頁並不是不存在,只是缺少一條能走過去的普通連結。
蜘蛛沿着分頁走时在做什么
蜘蛛不會像人一样滚動頁面,它主要看 HTML 里有没有可抓取的連結。常见的分頁寫法有几種:
- 普通 a 連結:指向 ?page=2 或 /list/page/2/ 這類地址,蜘蛛能直接跟進。
- JavaScript 翻頁:点击後由脚本請求資料並渲染,第一次抓取时可能只看到第一頁。
- “加载更多”按钮:如果按钮背後没有可抓取的 URL,蜘蛛通常不會去点。
- 無限滚動:内容随滚動加载,蜘蛛没有滚動動作,容易只拿到首屏。
所以,分頁能不能被蜘蛛走通,關键不在于视觉效果,而在于每個“下一頁”是否對應一個真實的、可被連結到的 URL。
哪些分頁寫法容易让蜘蛛提前停下
有些站点為了体驗,把分頁做成纯前端交互。用戶用起来顺滑,但蜘蛛看到的是一個没有出鏈的頁面。常见情况包括:
- 翻頁連結由 JS 動態插入,且没有服務端渲染;
- “下一頁”用 button 或 span 加事件,没有 href;
- 分頁參數被 robots.txt 屏蔽,蜘蛛無法跟進;
- 第二頁之後返回 404 或空内容;
- 分頁地址带大量跟踪參數,蜘蛛把每一頁当成不同 URL,反复抓取。
這些問题不一定會立刻让蜘蛛完全停止,但會让它在某個位置找不到繼續向前的路。抓取日誌里常表現為:列表頁抓取正常,詳情頁發現量却集中在第一頁。
翻頁到第几頁比較合理
從抓取预算的角度看,分頁越深,蜘蛛花在列表頁上的時間越多,留给詳情頁的時間就越少。很多站点的列表頁翻到很後面,内容重复度高、点击價值低,蜘蛛繼續翻的動力也會下降。一個實用的做法是:
- 把最重要的内容放在前几頁,确保蜘蛛在前三到五頁就能拿到主要詳情連結。
- 為列表頁設定合理的每頁條數,不要為了减少翻頁把几十條連結塞進一頁,影响加载速度。
- 如果内容量很大,考虑用分類、标簽、時間归档做更细的入口,而不是只靠一路“下一頁”。
- 保留一個可抓取的“下一頁”連結,同时给分頁地址做規范化,避免參數版本泛滥。
翻頁深度没有统一标准,但可以观察抓取日誌:如果蜘蛛長期只抓到前几頁,後面詳情頁很少出現,就要检查分頁路径是否在某處断掉了,而不是一味增加分頁數量。
分頁、Sitemap 和内鏈怎么配合
分頁是發現路径,不是唯一路径。對于翻不到底的深层内容,可以用 Sitemap 把重要詳情頁直接列出,让蜘蛛不必依赖分頁一路翻下去。同时,在詳情頁之間加上相關推荐、上一篇/下一篇、标簽聚合等内鏈,也能给蜘蛛提供另一條到達路径。
這样一来,分頁负责近期内容的快速發現,Sitemap 负责全量 URL 的兜底,内鏈负责頁面之間的互相牵引。三條路各司其职,比把所有希望压在分頁上更稳。
一個简單的检查清單
- 分頁連結是否為可抓取的 a 标簽,href 指向真實地址;
- 第二頁及之後是否能返回正常内容,而不是空頁或错誤頁;
- 分頁參數是否尽量简洁,避免無意义的跟踪參數;
- 列表頁是否有明确的上一頁、下一頁和頁碼連結;
- Sitemap 是否覆盖了分頁之外的詳情頁;
- 抓取日誌里詳情頁的發現是否只集中在前一两頁。
分頁的目标不是让蜘蛛翻完所有頁,而是让它在有限抓取里更早遇到值得抓的 URL。
把分頁当成抓取路径的一部分来设計,蜘蛛走起来會顺很多;剩下的,交给持續观察和調整。