列表页是蜘蛛在站内走得最多的一类页面。首页给出几个入口,分类页列出几十条链接,剩下的详情页大多要经过分页才能被发现。分页铺得顺不顺,很大程度上决定了蜘蛛一次能走到第几页。
蜘蛛在列表页上是怎么往下走的
抓到列表第一页后,蜘蛛会做两件事:把页面上指向详情页的链接放进待抓队列,同时找到“下一页”这类能带出更多链接的入口。只要分页链接是普通的 a 标签,它就能顺着往后翻;翻到某一页没有新链接,或者响应慢得超出它的等待,这条路径就停在那里。
所以分页路径上的瓶颈,通常不是“蜘蛛不愿意翻”,而是站点把页码藏起来了,或者翻页的成本太高。
页码的几种常见写法,决定蜘蛛能走多远
- 上一页 / 下一页按钮:最容易走通,只要 href 是真实可访问的 URL,蜘蛛就能一直往后翻。
- 带链接的数字页码:1 到 N 全部可点,蜘蛛能跳到任意一页,但页数多时容易出现大量低价值地址。
- “加载更多”按钮:如果点击后才由 JS 请求数据,且每个分页没有独立 URL,蜘蛛基本只看到第一页。
- 无限滚动:用户体感不错,蜘蛛却常常只抓到首屏那些内容。常见的补救方式,是给一个可直达的分页 URL 作为兜底。
深页码要不要保留
老内容仍然有搜索需求时,深页码值得留;如果翻到后面只是重复展示同一批内容,参数不同但页面几乎一样,那这些页面对抓取没有正向作用。可以按价值划线:前若干页保留可抓取,更深的页码不再直接给出链接,或者用更细的分类、标签把入口重新分开,让链接回到更浅的层级。
分页路径上最容易踩的几个坑
- 分页链接被顺手加上 nofollow 或 noindex,把往下走的通道堵住了。
- 页码 URL 带了一串排序、筛选参数,同一个列表被拆成很多个地址。
- 每页的标题、描述完全一样,蜘蛛难以判断这些页面是否还有继续走的必要。
- 翻页接口很慢,几秒才返回,或者并发一高就出现 5xx。
响应速度会直接缩短这条路径
翻页是一个串行的过程:抓完第一页,才能拿到第二页的链接。单页多花 1 秒,翻到第二十页就多花 20 秒,蜘蛛在同一段时间里能覆盖的站点就变少了。列表页往往是全站查询最重的页面之一,加上缓存、控制单页返回的数据量、把排序筛选从主路径上挪开,都是比较直接的做法。反过来,限流规则如果对蜘蛛卡得太紧,等于人为把翻页速度降到很低。
一份可以照着做的检查清单
- 用抓取工具模拟一次,确认分页 URL 都能直接打开,而不是必须点击才出现。
- 看服务器日志里蜘蛛实际翻到了第几页,和预期的深度做对比。
- 检查每页的 canonical、title 是否指向自身,避免整条分页路径都被归到第一页。
- 对确实没有内容的深页码做收敛:去掉链接、合并到分类页,或者保留链接但不让它们进入索引。
- 验证翻页接口的响应时间和错误率,确认高峰期蜘蛛也能稳定拿到页面。
蜘蛛翻页不是义务。站点把路径铺得越短、越稳,它能走到的页码才越多。