列表页是内容型站点分发内容的主要通道:首页、栏目页、标签页、搜索结果,几乎都要靠分页把老内容一层层铺开。分页本身不复杂,但它牵扯到 URL 形态、链接可达性、重复内容判定和抓取效率,一旦处理粗糙,常见的结果是同一批内容散出多个地址、深处页面长期无人访问、抓取被低价值的翻页消耗掉。
先看清分页的几种形态
不同实现方式对抓取的影响差别很大,自查前先确认自己的站点属于哪一类。
- 地址型分页:如 /list/page/2/ 或 /list?page=2,每页有独立可访问的 URL,翻页链接是真正的 a 标签,这是对抓取最友好的一种。
- 加载更多:点击按钮通过 JS 追加内容,地址不变。蜘蛛通常不会点击按钮,第二页之后的内容基本只能靠其他入口发现。
- 无限滚动:滚动自动加载,地址往往也不变,且容易形成极深的列表,抓取和回访都很难控制。
如果站点用的是后两种,重点就不是要不要优化分页,而是先保证内容有可被直接访问的静态入口。
分页自查清单
- 翻页链接是否为可点击的 a 标签,href 指向真实地址,而不是 onclick 或 javascript:void(0)。
- 分页 URL 是否稳定,同一页不会因为会话、排序、来源参数生成多个地址。
- 每页的 title 与 description 是否有所区分,至少带上页码或区间,避免整站列表页同名。
- 分页页面的 canonical 指向是否合理:指向自身还是指向列表首页,需要根据内容是否重复来判断,不要一律指向第一页。
- 排序参数(如 ?sort=price、?order=asc)是否会产生大量内容相同、顺序不同的地址,这类地址建议单独处理或禁止抓取。
- 筛选组合(地区+分类+价格)是否可控。参数越多,组合越接近无限,抓取很容易被引导到无意义的角落。
- 列表页每页条数是否过大,导致单页体积和响应时间偏高;也不宜过小,否则翻页层数过多。
- 越界页(页码超出实际范围)返回的是空列表 200 还是 404。返回 200 的空页会造成大量低质地址被反复抓取。
- 没有内容的空列表页是否有明确处理,而不是展示一个空白模板。
- 深层翻页(第十页以后)是否还有内链可达,是否在站点地图或专题入口中被补充。
老内容沉底的问题
分页越深,被抓取和被用户看到的概率越低,这是结构决定的,不是靠调参数能完全解决的。可行的做法是给老内容增加其他入口:按时间或主题整理的归档页、人工维护的专题页、相关阅读模块、站内搜索,以及在站点地图中包含重要的深层页面。让同一篇文章有不止一条发现路径,比纠结翻页深度更实际。
分页的职责是把内容铺开,而不是把内容藏起来。凡是只能靠翻到第十页才能找到的内容,都应该问一句:还有没有别的入口。
按这个顺序处理
- 先把翻页链接改成真实可抓取的 a 标签,确保每页可达。
- 统一分页 URL 形态,去掉多余参数,确认同一页只有一种地址。
- 检查 canonical 与 title,避免分页页之间互相打架。
- 处理越界页和空列表页,让无内容地址返回合适的状态码。
- 收敛排序与筛选参数,把明显重复的组合挡在抓取之外。
- 为深层内容补充归档、专题或站点地图入口。
这些调整通常不需要改版,改的是链接写法和状态码判断,但效果往往比反复调整列表页样式更直接。做完之后,隔一段时间看看爬虫日志里翻页地址的访问情况和状态码分布,就能判断处理是否到位。