站点运营

站点运营:分页与“加载更多”自查,别让翻页内容既没入口也没出口

列表页的分页和“加载更多”常常只照顾浏览体验:翻页入口藏在脚本里、参数格式混用、末页无限延伸,结果第一页之外的内容很难被发现。本文从可抓取入口、参数统一、末页收口、标题区分以及与站点地图和内链的配合几个角度,整理一份可落地的分页自查思路。

站点运营

站点运营:分页与“加载更多”自查,别让翻页内容既没入口也没出口

列表页翻到第几页,往往决定了长尾内容能不能被看见。分页看起来只是“上一页、下一页”两个按钮,真正做起来却容易变成两套逻辑:用户看到的是下拉加载和无限滚动,爬虫拿到的只有一个空壳;或者翻页入口全靠脚本在点击时才生成,HTML 里找不到任何可以跟随的地址。

分页常见的几个坑

  • 翻页链接写在按钮的点击事件里,页面源码中没有任何可点击的链接。
  • 分页参数不统一,page、p、start、offset 混着用,同一批内容出现好几套入口地址。
  • “加载更多”把后续内容注入当前页,但地址栏始终停在第 1 页。
  • 翻到最后一页之后还能继续翻,返回空列表却仍然是 200 状态码。
  • 所有分页页面的标题和描述与第一页完全相同。

自查可以从这几步开始

1. 关掉脚本再看一遍

用禁用脚本的方式打开列表页,看看能不能顺着链接走到第 2 页、第 3 页。如果关掉脚本之后翻页入口全部消失,说明分页对爬虫来说等于不存在。做法通常是给“下一页”保留一个真实的链接,脚本只负责增强体验,不负责提供唯一入口。

2. 确定一套分页参数

同一套列表只用一种参数格式,路径式分页或查询参数式分页都可以,关键是别混用。混用之后,同一批内容会被拆成多套地址,爬虫要在里面做取舍,你也很难判断哪些入口该留、哪些该收。

3. “加载更多”要有可抓取的备选

无限滚动和“加载更多”对浏览体验友好,但如果后续内容只能通过点击加载,且地址从不变化,那这些内容就只能依赖第一页的链接被发现。常见做法是保留真实的分页地址作为兜底,滚动加载只当作前端增强。

4. 想清楚分页页要不要收录

分页页通常不是用户搜索的终点,但也不是必须屏蔽的内容。可以让它们被正常抓取、正常返回 200,同时把标题写成“栏目名 + 第 N 页”这种能区分的形式,避免所有分页共用一套标题。至于 rel=prev/next 这类分页提示标记,主流搜索引擎已经不再把它当作索引信号,写不写影响有限,别指望靠它解决重复内容问题。

5. 末页要收口

最后一页不要再给出“下一页”的链接,避免形成无限翻页。翻过末尾之后返回空列表的地址,最好是明确报错或跳回第一页,而不是稳稳地返回 200 的空页面。空页面能返回 200,蜘蛛就有理由继续跟着参数一路翻下去。

6. 分页要和站点地图、内链配合

分页页一般不需要进 XML 站点地图,但列表页本身要能被导航或栏目内链找到。如果第 2 页之后的内容只能靠“下一页”链条到达,一旦中间某页出问题,后面几页就可能长期得不到抓取。

一个简单的检查顺序

  1. 禁用脚本,看能否从第 1 页走到第 3 页。
  2. 查看翻页链接的实际地址,确认参数格式统一。
  3. 检查第 2 页及之后的标题、描述是否与第一页重复。
  4. 翻到末页,确认不再输出“下一页”,空结果不返回 200。
  5. 在服务器日志里看分页地址的抓取情况,是否只在第一页打转。
分页做得好不好,标准其实很朴素:用户能顺畅翻,爬虫也能顺着链接翻。两边都不丢,才算把列表页的入口和出口都留住了。

如果站点规模不大,分页问题通常不会立刻显现;等到栏目内容积累到几百上千条,第一页之外的页面能不能被稳定发现,才会真正影响长尾内容的曝光。与其等抓取异常了再回头查,不如在栏目上线时就把翻页入口、参数格式和末页处理一次性定好。