分页和无限滚动并存时,列表页的抓取深度怎么控制
分页和无限滚动并存时,列表页的抓取深度怎么控制?要点是把抓取深度交给可被抓取的内链决定:无限滚动只能作为渐进增强,每一屏内容都必须能在一个真实分页地址上以完整 HTML 返回,并带着指向详情页的链接。翻页关系标记本身已经不承担收录信号的作用,指望它把深层页面拉进索引,是小站最常见的误判。
抓取深度是怎么形成的
爬虫从首页出发,沿链接一层层往里走,一个页面距离入口几跳,就是它的抓取深度。列表页是这条链路上的枢纽:栏目首页往下第几页还能被顺路抓到,取决于前面每页是否都留着指向下一页与详情页的链接。只用滚动加载时,第二屏之后的链接在原始 HTML 里不存在,深度就被截断在这里。
无限滚动要留的分页兜底
判断标准很简单:把脚本关掉,这一屏内容还在不在。安全的做法是让滚动与分页共用同一套数据,每页有独立地址、返回完整正文列表与条目链接,滚动只是在当前地址上追加下一页的内容。下面三种写法在可控性上差别明显。
| 分页写法 | 地址形态 | 抓取可达性 | 适用场景 |
|---|---|---|---|
| 路径式分页 | 栏目下按层级递进 | 上一页留有下一页链接即可顺路深入 | 栏目文章量中等 |
| 查询参数分页 | 同一地址加页码参数 | 参数需固定,避免组合爆炸 | 配合伪静态规则做地址收敛 |
| 仅滚动加载 | 无独立地址 | 脚本关闭后深层内容不可达 | 不建议单独使用 |
用内链与站点地图补齐深层内容
分页之外,还需要两条兜底:一是把深层条目用锚文本挂到栏目首屏或聚合页,让重要内容不必依赖翻页层数;二是站点地图里只列规范的分页地址与正式文档地址,不要把滚动追加出来的临时地址、带筛选参数的重复地址一并写进去。列表页的分页地址要与规范地址一致,否则抓取深度控制得再好,收录结果也会散落在多个近似地址上。
参数要固定,避免组合放大
分页参数一旦允许自由叠加,页码与排序、筛选相乘会生成大量近似页面,抓取额度被消耗在重复内容上。稳妥的顺序是:先定下哪些参数参与地址,再由伪静态规则把参与地址的参数收敛成固定形式,其余参数只在会话内生效,不出现在可被抓取的链接里。
常见问题
无限滚动一定伤收录吗? 不一定。作为渐进增强、且每屏都能在独立分页地址上以完整 HTML 取到时,抓取不受影响。
还需要写翻页关系标记吗? 它不再是收录信号,可作为可读性补充,但不能替代真实链接与分页地址。
页码要开到多深? 以实际内容量为准,宁可在首屏挂出深层条目,也不要把空页与薄页一路展开。
站点地图要列出每一页吗? 通常只列栏目首页与规范分页入口,全量铺页码会稀释抓取重点。