列表頁是通往老内容的路
新發布的頁面通常很快被蜘蛛發現,因為首頁、栏目頁、Sitemap 都會指向它。但發布已有一两年的文章,能持續指向它的入口往往只剩列表頁和分類頁。蜘蛛要重新訪問這些老 URL,多數时候得沿着列表一頁一頁往後翻。換句话说,列表頁能不能被抓、翻頁連結能不能被解析,直接决定了站内老内容還有没有被重新抓到的机會。
翻頁連結要能被直接解析
用可点击的連結,而不是只有按钮
- 頁碼、上一頁與下一頁最好輸出成普通的連結标簽,地址里带上完整 URL。蜘蛛在 HTML 里讀到連結,才會把它放進待抓队列。如果翻頁完全依赖 JavaScript 点击後异步加载,源碼里没有任何地址,蜘蛛基本走不下去。
- 加载更多如果只是按钮加接口請求,同样存在這個問题。常见的做法是保留按钮的交互体驗,同时在頁面上放一個可点击的下一頁連結,或者在第一頁就带上後續几頁的地址。
- 無限滚動模式,建议给每段内容配一個可訪問的分頁地址,让蜘蛛能從某個确定的入口進入後面的内容,而不是只能看到首屏那一批。
翻頁參數尽量简單
類似 page=2 這種單一參數的地址,蜘蛛處理起来没什么负担。麻烦的是分頁與排序、篩選、時間范围叠加在一起,同一批内容被组合出成百上千個 URL。抓取资源被摊薄之後,真正有内容的頁面反而排不上队。分頁參數保持單一、可预测,比事後清理要省事得多。
翻頁越深,被訪問的概率越低
前两三頁的抓取次數通常明顯高于後面的頁。這不是蜘蛛偷懒,而是它在按頁面價值分配有限的抓取资源。越靠近入口、内鏈越多的地址,越容易被反复訪問;第 30 頁之後的内容,可能几周才被碰一次。
如果你的老内容只靠深翻頁触達,可以考虑在正文底部补上相關文章、同類推荐或专题聚合入口,让這些頁面多出一條更短的路。
分頁頁本身要不要被索引
分頁頁可以保持可抓取、可索引的狀態,canonical 指向自身是比較稳妥的做法。把所有分頁的 canonical 统一指向第一頁,容易让蜘蛛對“這一頁到底是什么内容”产生困惑。至于早年的 prev/next 标记,如今已不是主流搜尋引擎的索引信号,保留與否影响不大,關键還是連結本身能被解析出来。
每頁條數决定翻多少頁
内容總量固定时,每頁條數直接决定翻頁跳數。每頁十條,一千篇内容要翻一百頁;每頁五十條,只需要二十頁。跳數少,末端頁面离入口更近,被重新抓到的机會相對更大。但每頁條數也不能無限加大,頁面体积、加载時間、服務器压力都要一起考虑。可以在观察抓取记錄和頁面性能之後,找一個折中的數值。
怎么確認翻頁路径是通的
- 看服務器日誌或抓取統計里列表頁被訪問的次數,以及翻到第几頁之後請求量明顯下滑。
- 抽查放置已久的老 URL,看最近一段時間是否還有抓取记錄。完全没有记錄的頁面,很可能只存在于 Sitemap 中。
- 用爬虫工具模拟走一遍列表路径,重点看第 N 頁之後是否還能解析出指向下一批内容的連結。
如果某一頁之後的連結断了,後面的内容就只能靠 Sitemap 和零散内鏈维持發現,节奏會慢很多。
给老内容多留一條短路径
深翻頁本身不是坏设計,只是效率有限。更稳的做法是给重要老内容补几條更短的入口:相關文章模块、专题聚合頁、栏目下的精選列表。這样即使蜘蛛没有翻到第三十頁,也能從別的路径抵達。列表頁负责广度,短路径负责深度,两者配合,抓取路径才不容易断。
维護這件事不需要每天動手,但值得隔一段時間检查一次:翻頁連結是否還在,分頁地址有没有被新上线的功能改掉,老内容的抓取记錄是否還有波動。這些细节不出問题的时候没什么存在感,一旦断開,恢复起来往往要等好几轮抓取。