很多站点的新内容並不靠首頁直接曝光,而是躺在列表頁的第 N 頁里。蜘蛛能不能發現它們,取决于分頁這條通路修得好不好。分頁做得好,新 URL 在發布後不久就會進入抓取队列;做得不好,内容會長期卡在“從未被發現”的狀態。
分頁是 URL 發現的主干道
對大多數内容型站点来说,蜘蛛進入站点的第一站往往是首頁,第二站就是列表頁。首頁给的是几個重点推荐,列表頁给的才是全部。如果列表頁只展示最近十條,並且没有任何通向更早内容的連結,剩下的 URL 就只能靠 Sitemap 或外鏈被發現,效率會差很多。
三種常见分頁形式的抓取友好度
數字分頁(?page=2 或 /list/2)
連結直接寫在 HTML 里,蜘蛛顺着点就能一层层往深處走,是最容易被抓的形式。需要留意的是每個分頁 URL 要能獨立訪問,不要依赖 Cookie 或 POST 請求切換。
“加载更多”按钮
按钮本身通常是 JS 事件,HTML 里没有對應的 href,蜘蛛点不動。常见补救方式是在按钮下方保留一组可点击的頁碼連結,或者在 noscript 里给出静態連結。
無限滚動
滚動加载的列表對新 URL 的發現帮助有限,因為蜘蛛的訪問不會触發滚動。可以為滚動内容配一套静態分頁入口,让同一批 URL 多一條到達路径。
翻頁深度與抓取顺序
蜘蛛的抓取顺序大致沿着連結层級展開,越靠前的頁面越容易被優先訪問。列表頁越深,被排到的机會越小。可以留意几点:
- 第一頁到第三頁通常抓得比較勤,第五頁之後明顯變少;
- 分頁連結如果只放在頁面底部、又被大量無關模块包围,蜘蛛仍可能点到,但優先級會降低;
- 每頁列出的條目數量太少,URL 會被稀释到更多层分頁里;
- 分頁參數若叠加排序、篩選组合,會产生大量近似 URL,反而分散抓取。
把分頁通路理顺的几件事
- 分頁 URL 结构保持稳定,不要今天用 /page/2、明天改成 ?p=2。
- 列表頁里的條目連結使用真實 href,不用 onclick 跳轉。
- 篩選、排序參數尽量用 robots.txt 或 canonical 收敛,避免生成成千上萬個空列表。
- 在 Sitemap 里單獨保留列表頁 URL,让它們有獨立入口。
- 内容量大的站点,可以做分類索引頁或专题頁,把深度摊薄。
分頁與 Sitemap 的分工
Sitemap 解决的是“有哪些 URL”,分頁解决的是“從這里能走到”。两者並不冲突:Sitemap 负责把新 URL 报备,分頁负责让它拥有一條可反复经過的内鏈路径。只报备不给通路,蜘蛛抓到一次之後可能很久不再回来;只有通路没有报备,新 URL 的首次發現就要等蜘蛛自然巡到。
分頁通路的價值不在于多抓几個頁面,而在于让新内容在發布後就有机會被排進队列。
最後,分頁抓取也會受服務器响應和抓取预算影响。列表頁如果本身很重、响應很慢,蜘蛛翻到第三頁时可能就收手了。把列表頁做得轻一点,比反复提交 Sitemap 更實在。