搜索抓取

列表页分页与筛选参数:让蜘蛛的抓取路径收敛而不是发散

列表页是蜘蛛发现新 URL 的重要入口,但分页和筛选参数容易把抓取路径带向发散。本文从分页链接的可抓取性、参数组合的控制、内链暴露范围、Sitemap 与 robots 的配合,以及服务器响应稳定性几个角度,整理一套让蜘蛛沿核心路径抓取的思路。

搜索抓取

列表页分页与筛选参数:让蜘蛛的抓取路径收敛而不是发散

列表页通常是站点里 URL 最密集的地方。蜘蛛从首页进入栏目,再沿着分页和筛选链接往下走,这个过程会直接决定它能不能发现详情页,也会影响抓取预算花在哪里。如果分页和筛选参数不加控制,蜘蛛的抓取路径会像树枝一样不断分叉,最后既抓不完,也抓不深。

分页链接要让蜘蛛能跟

分页是列表页最基础的抓取路径。蜘蛛不会点击按钮,也不会执行复杂的筛选交互,它只认 HTML 里能解析到的链接。所以分页导航最好用 a 标签 直接输出 href,而不是用 JavaScript 点击事件或表单提交。

  • 下一页、上一页、页码链接都应该可抓取;
  • 避免用“加载更多”按钮替代所有分页链接;
  • 分页 URL 保持简洁,例如 /list/page/2/,不要叠加无意义参数。

如果分页链路被切断,蜘蛛可能只抓到第一页,后面的详情页就缺少内链入口,只能依赖 Sitemap 或外链发现。

筛选参数最容易让路径发散

颜色、尺寸、价格区间、排序方式等筛选条件组合起来,会产生大量 URL。比如一个列表页有 10 个筛选维度,每个维度 3 个选项,理论上可以生成数万条 URL。蜘蛛一旦进入这种参数迷宫,就会把抓取预算消耗在低价值页面上。

收敛不是把所有筛选都屏蔽,而是让蜘蛛优先走有内容价值、有内链意义的路径。

常见做法是:

  1. 只把主要筛选组合放进内链,例如“品牌 + 品类”这种有搜索需求的组合;
  2. 对排序参数、会话参数、追踪参数用 robots.txt 屏蔽,或通过 canonical 指向不带参数的版本;
  3. 用 nofollow 或 JavaScript 控制次要筛选,减少蜘蛛可跟随的链接数量;
  4. 在 Sitemap 中只提交核心列表页和分页,不提交无限参数组合。

内链结构决定蜘蛛先走哪条路

蜘蛛在列表页里会按链接出现的位置和数量来判断重要性。导航、面包屑、列表主体里的链接,通常比页脚、侧栏深处的链接更容易被优先抓取。如果希望蜘蛛沿着“栏目页 → 分页 → 详情页”这条路径走,就要保证这条路径上的链接稳定、清晰、层级不过深。

同时要避免同一批详情页被大量筛选页重复链接。重复链接会让蜘蛛反复访问同一批 URL,增加回环概率,也会稀释真正需要抓取的新页面。

服务器稳定性会影响路径能否走完

列表页往往涉及数据库查询和模板渲染,响应时间比静态页更长。如果蜘蛛抓取时频繁遇到 5xx、超时或连接中断,它会降低抓取频率,甚至暂时收缩抓取范围。原本能走完的分页路径,可能只走到前几页就停了。

  • 给列表页做缓存,减少数据库压力;
  • 监控 5xx 和超时比例,别让蜘蛛在列表页反复碰壁;
  • 分页数量多时,考虑静态化或预生成部分页面。

用日志和抓取数据检查收敛效果

收敛策略是否有效,不能只看感觉。可以定期查看服务器日志里蜘蛛对列表页和参数页的访问比例,观察参数页抓取是否下降、详情页抓取是否上升。如果参数页仍然占据大量抓取,就要回去检查内链暴露和 robots 规则。

另外,Sitemap 可以作为补充入口,把重要的列表页和分页明确交给蜘蛛,但它不能替代内链。蜘蛛更习惯沿着页面里的链接走,Sitemap 更像一份备选路线图。

总结来说,列表页分页与筛选参数的核心问题是路径收敛:让蜘蛛用有限的抓取预算,走完你希望它走的主干路径,而不是在参数组合里打转。把可抓取的分页链接、受控的筛选内链、清晰的 canonical、合理的 robots 规则和稳定的服务器响应配合起来,蜘蛛的抓取路径才会更接近你的预期。