栏目页、标签页、商品列表、搜索结果页,这些统称为列表页。它们是整站链接密度最高的地方,一个列表页可能挂着几十条内容入口,蜘蛛顺着它往下爬,效率本该很高。但实际情况常常相反:分页配置得随意,蜘蛛要么翻不到第二页,要么在几百页的翻页里绕圈,真正有内容的内页反而没被看到。
分页这件事看起来只是加个「下一页」按钮,但里面有几个容易踩的坑,值得单独做一次自查。
先确认自己的分页属于哪一种
不同实现方式,抓取表现差别很大,先对号入座:
- 路径式:/list/page/2/,每页一个独立可访问地址,对蜘蛛最友好。
- 参数式:/list?page=2,能用,但要确认参数不会被服务器直接忽略或跳回第一页。
- 按钮式加载更多:点击后由脚本追加内容,地址栏不变。
- 无限滚动:一直往下拉,理论上没有终点。
后两种对用户体验可能不错,但如果不做额外处理,蜘蛛往往只能拿到第一屏的那几条链接,剩下的内容相当于藏在门后。
分页自查的六个要点
1. 翻页链接要能被抓到
把「下一页」做成 a 标签、指向一个真实地址,这是最基础的要求。如果它只是一个绑定点击事件的按钮,脚本执行能力有限的抓取工具就会卡在第一页。检查方法很简单:禁用浏览器 JavaScript 后打开列表页,看看还能不能点到第二页。
2. 分页页的 canonical 指向自己
有些站点图省事,把所有分页页的 canonical 都指向列表第一页。这样做的结果是第二页以后的内容信号被集中到第一页,页面上那些内页链接的价值也被稀释。分页页是独立地址、有独立内容,canonical 应当指向自身。
3. 分页页的标题别整站一个样
如果第二页、第三页的标题和第一页一字不差,蜘蛛很难判断这些页面的区别。建议在标题或描述里带上页码或区间信息,让人和机器都能识别当前处于哪一段。这不是为了排名,而是为了让页面之间有基本区分度。
4. 翻页深度要有上限
一个条目很多的老栏目,翻到第一百页时,内容往往已经是很久以前的旧信息,用户几乎不会翻到那里,蜘蛛也没必要把时间花在那边。可以考虑只保留前若干页的分页链接,更早的内容通过归档页、时间轴或站内搜索来触达。这样既保留可发现性,又避免抓取资源被大量低价值翻页吃掉。
5. 加载更多要留一条退路
如果坚持用加载更多或无限滚动,至少补两件事:一是为每批内容准备对应的静态分页地址,并在页面上用普通链接暴露出来,常见做法是页脚放一个「查看全部」;二是保证首屏 HTML 里就有足够数量的条目链接,不要全靠脚本注入。
6. 分页页内容别太空
只有一列标题加链接、没有任何摘要的列表页,本身信息量就很低。适当补上摘要、时间、分类等字段,能让列表页承担一部分信息传递的作用,也让蜘蛛在抓取时更容易判断页面主题。
分页不是要把所有内容都翻给蜘蛛看,而是要把值得看的内容放在更容易到达的位置。数量堆得多,不等于路径理得顺。
一份可以照着做的检查清单
- 随机挑三个列表页,关闭 JavaScript,确认能否翻到第二页。
- 查看分页页的 canonical,确认指向的是当前页而不是第一页。
- 对比第一页和第三页的标题、描述,看看是否有区分。
- 检查分页链接是不是 a 标签,还是只挂了点击事件。
- 统计某个老栏目的最大页码,评估是否需要设一个翻页上限。
- 如果用加载更多,确认页面上存在一个指向静态分页的普通链接。
- 在服务器日志里筛选列表页地址,看蜘蛛访问的是第几页居多。
从日志里验证效果
检查完之后,隔一段时间回到服务器日志,按列表页路径做一次筛选。可以观察两点:蜘蛛对分页页的访问是否集中在靠前的几页;内页的抓取量相比调整前有没有变化。抓取频次本身会受站点权重、更新节奏影响,短期波动不必过度解读,看趋势就够了。
分页是站内链接结构的一环,它不产生内容,但决定了内容被发现的路径顺不顺。把这一步理顺,往往比多开几个新栏目更实在。