站点运营

站点运营:列表页与翻页的抓取治理,别让分页把蜘蛛带进死胡同

列表页是网站里最主要的 URL 发现入口,但分页处理不当,会让蜘蛛在深层页码里空转。本文梳理常见翻页写法、可抓链接的放置方式,以及查看全部、无限滚动、归档页的取舍,并给出一份可以照着检查的清单。

站点运营

站点运营:列表页与翻页的抓取治理,别让分页把蜘蛛带进死胡同

站点里的列表页往往承担着最重的 URL 发现职责:文章列表、商品分类、标签聚合、站内搜索,几乎所有详情页都是靠它们被蜘蛛第一次看见的。也正因为如此,分页处理得粗糙时,蜘蛛会在列表页之间来回消耗配额,真正的新页面反而排不进队列。

先看清自己用的是哪种翻页写法

  • 路径式:/list/page/2/ 这种形式。可抓、可缓存、可单独分享,是相对稳妥的做法。
  • 参数式:/list?page=2。同样能抓,但要和排序、筛选、跟踪参数区分开,避免组合爆炸。
  • 纯脚本翻页:点击按钮后由 JavaScript 追加内容,地址栏不变。蜘蛛如果拿不到渲染结果,就只能看到第一页。
  • 无限滚动:本质上和上一种相同,只是把按钮换成了滚动事件。

给蜘蛛留一条能走的路

翻页不必做得漂亮,但链接要真实存在于 HTML 里。下面几条是底线:

  1. 分页链接用 a 标签的 href 输出,而不是绑定点击事件的 div 或 span。
  2. 第一页和后续页互链,不要出现只能从第一页跳到第 N 页、却回不来的情况。
  3. 翻页控件里的数字只做辅助,真正要保证的是“上一页 / 下一页”这两个链接始终存在。
  4. 地址栏里的 URL 与链接 href 保持一致,避免用户看到 A 地址、蜘蛛拿到 B 地址。

深层页码要不要全部放开

一个分类下有五百页,全部让蜘蛛抓完通常并不划算:靠后的页码内容重复度高,能带来的新 URL 也有限。常见做法是给翻页设一个深度,比如前五到十页正常可抓,更深的页码不输出可抓链接,改为引导用户用时间归档或筛选去找。这属于取舍,不是规定,判断依据是:深层页码上还有多少没被收录过的详情页。如果新内容都集中在前面几页,就没有必要把尾巴全部展开。

查看全部、排序与筛选

“查看全部”这类页面如果一次列出几百条链接,对新站的抓取配额是不小的压力,但它的 URL 发现效率又确实很高。折中方式是把“查看全部”限制在条目较少的分类,或者改成按时间、按首字母切分的归档页,让每个页面只装几十条链接。

排序和筛选参数建议单独治理:只保留默认排序可抓,其余组合通过 robots.txt 或页面上的链接形态控制,别让排序参数、标签参数、来源参数互相相乘。

无限滚动的替代入口

如果产品坚持无限滚动,至少要补一个分页版本:在列表底部输出“下一页”的真实链接,或提供一个按页码访问的地址,并在 sitemap 里把重要的列表页列出来。对蜘蛛来说,有人工入口的地址,比需要交互才能出现的地址可靠得多

一份可以照着做的检查清单

  • 列表页首屏 HTML 里,至少能看到一条指向下一页的链接。
  • 翻页地址的 canonical 指向自身,而不是全部指向第一页。
  • 分页页面的标题和描述有区分,不是整站复制同一份。
  • 空列表返回 404 或明确的空状态,而不是内容为空的 200。
  • 筛选、排序后的地址不进入 sitemap。
  • 列表页上的详情链接是直链,不经过跳转中转。
分页只是列表页的附属结构,真正要保证的是:新内容发布后,从首页出发走两三次点击就能被链接到。翻页做得再规范,如果新条目只出现在深层页码里,同样容易被漏掉。