列表页是通往老内容的路
新发布的页面通常很快被蜘蛛发现,因为首页、栏目页、Sitemap 都会指向它。但发布已有一两年的文章,能持续指向它的入口往往只剩列表页和分类页。蜘蛛要重新访问这些老 URL,多数时候得沿着列表一页一页往后翻。换句话说,列表页能不能被抓、翻页链接能不能被解析,直接决定了站内老内容还有没有被重新抓到的机会。
翻页链接要能被直接解析
用可点击的链接,而不是只有按钮
- 页码、上一页与下一页最好输出成普通的链接标签,地址里带上完整 URL。蜘蛛在 HTML 里读到链接,才会把它放进待抓队列。如果翻页完全依赖 JavaScript 点击后异步加载,源码里没有任何地址,蜘蛛基本走不下去。
- 加载更多如果只是按钮加接口请求,同样存在这个问题。常见的做法是保留按钮的交互体验,同时在页面上放一个可点击的下一页链接,或者在第一页就带上后续几页的地址。
- 无限滚动模式,建议给每段内容配一个可访问的分页地址,让蜘蛛能从某个确定的入口进入后面的内容,而不是只能看到首屏那一批。
翻页参数尽量简单
类似 page=2 这种单一参数的地址,蜘蛛处理起来没什么负担。麻烦的是分页与排序、筛选、时间范围叠加在一起,同一批内容被组合出成百上千个 URL。抓取资源被摊薄之后,真正有内容的页面反而排不上队。分页参数保持单一、可预测,比事后清理要省事得多。
翻页越深,被访问的概率越低
前两三页的抓取次数通常明显高于后面的页。这不是蜘蛛偷懒,而是它在按页面价值分配有限的抓取资源。越靠近入口、内链越多的地址,越容易被反复访问;第 30 页之后的内容,可能几周才被碰一次。
如果你的老内容只靠深翻页触达,可以考虑在正文底部补上相关文章、同类推荐或专题聚合入口,让这些页面多出一条更短的路。
分页页本身要不要被索引
分页页可以保持可抓取、可索引的状态,canonical 指向自身是比较稳妥的做法。把所有分页的 canonical 统一指向第一页,容易让蜘蛛对“这一页到底是什么内容”产生困惑。至于早年的 prev/next 标记,如今已不是主流搜索引擎的索引信号,保留与否影响不大,关键还是链接本身能被解析出来。
每页条数决定翻多少页
内容总量固定时,每页条数直接决定翻页跳数。每页十条,一千篇内容要翻一百页;每页五十条,只需要二十页。跳数少,末端页面离入口更近,被重新抓到的机会相对更大。但每页条数也不能无限加大,页面体积、加载时间、服务器压力都要一起考虑。可以在观察抓取记录和页面性能之后,找一个折中的数值。
怎么确认翻页路径是通的
- 看服务器日志或抓取统计里列表页被访问的次数,以及翻到第几页之后请求量明显下滑。
- 抽查放置已久的老 URL,看最近一段时间是否还有抓取记录。完全没有记录的页面,很可能只存在于 Sitemap 中。
- 用爬虫工具模拟走一遍列表路径,重点看第 N 页之后是否还能解析出指向下一批内容的链接。
如果某一页之后的链接断了,后面的内容就只能靠 Sitemap 和零散内链维持发现,节奏会慢很多。
给老内容多留一条短路径
深翻页本身不是坏设计,只是效率有限。更稳的做法是给重要老内容补几条更短的入口:相关文章模块、专题聚合页、栏目下的精选列表。这样即使蜘蛛没有翻到第三十页,也能从别的路径抵达。列表页负责广度,短路径负责深度,两者配合,抓取路径才不容易断。
维护这件事不需要每天动手,但值得隔一段时间检查一次:翻页链接是否还在,分页地址有没有被新上线的功能改掉,老内容的抓取记录是否还有波动。这些细节不出问题的时候没什么存在感,一旦断开,恢复起来往往要等好几轮抓取。