分页是很多站点 URL 数量膨胀的主要来源。栏目列表往后翻,每页一个地址;一篇文章拆成三段,每段一个地址。这些地址会被爬虫顺着翻页链接一路发现,于是收录报告里就多出成百上千个同质页面。
动手处理之前,先确认一件事:你面对的是列表分页还是内容分页。两者的目的不同,处理方式也不一样,混在一起讨论很容易做出互相矛盾的决定。
一、两种分页,两种目的
列表分页
栏目页、标签页、聚合页往后翻产生的地址。它的作用是让爬虫和用户找到更早的内容,属于入口性质,单个页面本身的信息增量很低。
内容分页
一篇文章因为篇幅长被拆成 1/2/3 页。每一页都是正文的一部分,合起来才构成一个完整内容,属于内容性质。
二、翻页地址常见的几个问题
- 所有翻页都 canonical 指向第一页,等于告诉搜索引擎后面几页是重复的,但同时又保留着可点击的翻页链接,信号前后矛盾。
- 翻页 URL 带上了会话、排序、来源追踪等参数,同一个第 2 页出现多个地址。
- 最后一页没有出口,或者下一页按钮失效,形成断头路。
- 内容分页被当成独立文章收录,每页都偏薄,结果谁都没能进入索引。
三、列表分页的核对顺序
- 先看有多少页真正被访问过。从日志里拉出翻页地址的访问量,很多站点的第 5 页之后几乎没有点击,这部分优先收口。
- 每个翻页地址自引用 canonical。不要跨页指向第一页,那样会把发现路径和索引信号搅在一起,后续很难判断是哪一环出了问题。
- 统一参数。排序、筛选、来源标记这类参数不要在翻页链接里层层传递,翻页只保留页码一个变量。
- 给深翻页一个边界。如果业务上确实不需要第 50 页,就在入口层面收掉,而不是先敞开再靠 robots 事后屏蔽。
- 保留一条向上的路径。每个翻页页面都要能回到栏目首页,避免爬虫进得去出不来。
四、内容分页的处理思路
内容分页对用户和爬虫都不算友好,最省事的办法是合并成一页,用锚点或目录代替拆分。如果因为加载性能必须拆分,那么至少要做到:
- 每页仍然自引用 canonical,不要互相指向;
- 页与页之间有明确的上一页、下一页链接,顺序固定不变;
- 标题和摘要能区分当前处于第几页,避免三页标题完全一样;
- 如果提供了完整版地址,把它作为规范地址,并确保它自己能被抓取到。
五、什么时候该收口
判断标准其实很朴素:这个翻页地址有没有独立的搜索需求,有没有独立的信息增量。两个都没有,就倾向于让它可被抓取但不进入索引;只要有一个成立,就按正常页面来处理。收口的操作顺序是:先改内链和入口,再调 canonical,最后才考虑用 robots 或 noindex 兜底。
分页本身不是问题,问题是同一批内容用几十个地址反复出现。先把地址收敛到可控数量,再谈收录。
六、可以照着做的一轮检查
- 从站点地图或日志里拉出所有带页码参数的地址,按数量排序。
- 区分列表分页和内容分页,分别统计占比。
- 抽查十组翻页,看 canonical、上一页下一页链接、参数是否干净。
- 把没有点击、没有独立内容的翻页列成收口清单,标注改动方式。
- 改完后观察一段时间,对比抓取量和索引量的变化,而不是立刻下结论。