分页是抓取路径上的一段路
列表页通常按时间、热度或分类排序,每页放十几到几十条链接。蜘蛛第一次抓到列表页时,会看到第一页的详情链接,以及一个指向第二页的“下一页”链接。它顺着这个链接继续走,再发现第二页的详情链接,如此往复。对蜘蛛来说,分页不是一条独立的路径,而是从频道页走向详情页的一段过渡路。这段路走得顺不顺,决定了它能不能在有限时间里摸到更深的内容。
反过来,如果分页链接断掉,或者翻页按钮只是一个不能直接抓取的控件,蜘蛛到了第一页或第二页就可能停住。后面的详情页并不是不存在,只是缺少一条能走过去的普通链接。
蜘蛛沿着分页走时在做什么
蜘蛛不会像人一样滚动页面,它主要看 HTML 里有没有可抓取的链接。常见的分页写法有几种:
- 普通 a 链接:指向 ?page=2 或 /list/page/2/ 这类地址,蜘蛛能直接跟进。
- JavaScript 翻页:点击后由脚本请求数据并渲染,第一次抓取时可能只看到第一页。
- “加载更多”按钮:如果按钮背后没有可抓取的 URL,蜘蛛通常不会去点。
- 无限滚动:内容随滚动加载,蜘蛛没有滚动动作,容易只拿到首屏。
所以,分页能不能被蜘蛛走通,关键不在于视觉效果,而在于每个“下一页”是否对应一个真实的、可被链接到的 URL。
哪些分页写法容易让蜘蛛提前停下
有些站点为了体验,把分页做成纯前端交互。用户用起来顺滑,但蜘蛛看到的是一个没有出链的页面。常见情况包括:
- 翻页链接由 JS 动态插入,且没有服务端渲染;
- “下一页”用 button 或 span 加事件,没有 href;
- 分页参数被 robots.txt 屏蔽,蜘蛛无法跟进;
- 第二页之后返回 404 或空内容;
- 分页地址带大量跟踪参数,蜘蛛把每一页当成不同 URL,反复抓取。
这些问题不一定会立刻让蜘蛛完全停止,但会让它在某个位置找不到继续向前的路。抓取日志里常表现为:列表页抓取正常,详情页发现量却集中在第一页。
翻页到第几页比较合理
从抓取预算的角度看,分页越深,蜘蛛花在列表页上的时间越多,留给详情页的时间就越少。很多站点的列表页翻到很后面,内容重复度高、点击价值低,蜘蛛继续翻的动力也会下降。一个实用的做法是:
- 把最重要的内容放在前几页,确保蜘蛛在前三到五页就能拿到主要详情链接。
- 为列表页设置合理的每页条数,不要为了减少翻页把几十条链接塞进一页,影响加载速度。
- 如果内容量很大,考虑用分类、标签、时间归档做更细的入口,而不是只靠一路“下一页”。
- 保留一个可抓取的“下一页”链接,同时给分页地址做规范化,避免参数版本泛滥。
翻页深度没有统一标准,但可以观察抓取日志:如果蜘蛛长期只抓到前几页,后面详情页很少出现,就要检查分页路径是否在某处断掉了,而不是一味增加分页数量。
分页、Sitemap 和内链怎么配合
分页是发现路径,不是唯一路径。对于翻不到底的深层内容,可以用 Sitemap 把重要详情页直接列出,让蜘蛛不必依赖分页一路翻下去。同时,在详情页之间加上相关推荐、上一篇/下一篇、标签聚合等内链,也能给蜘蛛提供另一条到达路径。
这样一来,分页负责近期内容的快速发现,Sitemap 负责全量 URL 的兜底,内链负责页面之间的互相牵引。三条路各司其职,比把所有希望压在分页上更稳。
一个简单的检查清单
- 分页链接是否为可抓取的 a 标签,href 指向真实地址;
- 第二页及之后是否能返回正常内容,而不是空页或错误页;
- 分页参数是否尽量简洁,避免无意义的跟踪参数;
- 列表页是否有明确的上一页、下一页和页码链接;
- Sitemap 是否覆盖了分页之外的详情页;
- 抓取日志里详情页的发现是否只集中在前一两页。
分页的目标不是让蜘蛛翻完所有页,而是让它在有限抓取里更早遇到值得抓的 URL。
把分页当成抓取路径的一部分来设计,蜘蛛走起来会顺很多;剩下的,交给持续观察和调整。