對多數站点来说,蜘蛛發現新 URL 的第一入口是列表頁。它拿到第一頁,沿着頁面上的 a 标簽繼續往下走,走到第二頁、第三頁,這是最自然的一條路径。所以“下一頁”這個連結是否真實存在于 HTML 里,直接决定了蜘蛛能不能顺着走。
蜘蛛翻頁靠的是什么
它不点按钮,也不滚動鼠标。蜘蛛只認两样東西:頁面源碼里可解析的連結,以及這些連結指向的地址能不能正常返回内容。凡是需要用戶交互才會出現的地址,預設都不在它的路径上。
三種常见的分頁實現
传统頁碼連結
- 地址形如 /list/?page=2 或 /list/page/2/,可重复訪問;
- “下一頁”寫成 a href,蜘蛛能一頁頁跟下去;
- 頁碼數量多时,深层頁的抓取频率通常明顯下降。
“加载更多”按钮
如果按钮只是 div 加一段 JS 事件,首次渲染的 HTML 里没有任何指向第二頁的地址,蜘蛛就看不到後續内容。把按钮改成 a href 指向真實分頁地址,再用 JS 拦截点击做無刷新体驗,是相對稳妥的折中。
無限滚動
無限滚動對用戶友好,對蜘蛛基本只暴露第一屏。常见做法是在滚動区域底部保留一個“查看全部”的普通連結,或提供 /list/page/N/ 形式的静態分頁,作為蜘蛛的替代通道。
rel="next" 與 rel="prev" 已经不是抓手
主流搜尋引擎早已不再把 rel="next"/"prev" 当作分頁信号,也不保證依據它發現連結。分頁结构需要靠真實的 a 标簽和可訪問的 URL 来表達,而不是靠标记暗示。
分頁越深,被走到的概率越低
列表翻到十几頁、二十几頁之後,蜘蛛回訪的密度通常會降下来,這是资源分配的正常结果。與其指望它翻到底,不如把重要内容往浅层放:分類頁、聚合頁、相關文章模块、站内推荐,都能把深层 URL 提到更浅的位置。Sitemap 适合作為补充入口,承接那些确實進不了浅层連結的頁面。
落地检查清單
- 用查看源代碼或關閉 JS 的方式,確認翻頁連結是否真的寫在 HTML 里;
- 检查分頁地址是否稳定、可重复訪問,不依赖會過期的會话參數;
- 確認列表條目是直连詳情頁,而不是先跳一次中轉地址;
- 分頁的 canonical 指向自身,不要把各頁碼都指向第一頁;
- 在服務器日誌里搜 page=2、page=3 或 /page/,確認蜘蛛是否真的翻過頁;
- 對需要深翻的列表,考虑按時間、分類或字母切分出更细的入口。
一個容易被忽略的细节
如果列表頁本身高度雷同,只有标题和缩略图,蜘蛛對這類頁面的抓取價值判断會偏低,翻頁的動力也會跟着下降。适当补充摘要、發布時間、分類說明,让每一頁之間有点差异,是成本較低的改善方式。改完之後观察日誌里抓取分布的變化,比凭感觉判断更可靠。
分頁要解决的從来不是“让蜘蛛多抓”,而是保證内容的到達路径真實存在。把翻頁連結做實,把重要 URL 放在浅层,用 Sitemap 兜底,剩下的交给站点自身的更新节奏。