列表页往往是蜘蛛进入站点后停留最久的地方:它从首页走到栏目页,再顺着翻页一层层往下翻。翻页和筛选参数怎么设计,直接决定了蜘蛛能走多深、会不会在参数组合里绕圈,也决定了它能不能顺路把详情页带走。
翻页的三种写法,蜘蛛看到的路径不一样
常见的分页实现有三种:服务端渲染的 a 链接、JS 渲染的翻页按钮、无限滚动。对蜘蛛来说,这三种的可走性差别很大。
- a 链接翻页:最稳。每一页都有独立 URL,蜘蛛可以逐个跟进,也方便在日志里核对。
- JS 按钮翻页:如果按钮只改写前端状态而不改变 URL,蜘蛛基本走不到下一页;即便改了 URL,也要看渲染后链接是否真的出现在 DOM 里。
- 无限滚动:通常只渲染前几屏,后面的内容没有 URL 入口,蜘蛛只能看到第一屏。
如果站点是后两种实现,至少给分页补一套可抓取的 a 链接兜底,比如把翻页按钮做成真实链接,或者在页面底部放一组页码链接。
rel=next/prev 现在还值不值得加
搜索引擎已经不再把它当作索引信号,但它仍然是一种清晰的路径声明,对内部工具和日志排查有帮助。加不加都不直接影响抓取本身,真正起作用的是链接是否可点、可解析。
筛选参数:岔路口最容易变成迷宫
排序、筛选、每页条数、会话标识,这些参数叠在一起,理论上能生成成百上千个 URL。蜘蛛一旦开始尝试组合,抓取预算就会被大量消耗在没有新内容的页面上。
处理思路一般是收敛而不是全堵:
- 把排序、每页条数这类不改变内容集合的参数,统一 301 或 canonical 到一个规范 URL。
- 会话 ID、来源追踪参数尽量不进入链接,或者用 robots.txt 屏蔽对应模式。
- 保留少量真正有搜索需求的筛选组合,比如品牌、价格区间,让它们成为可抓取的入口页。
判断哪些该留,可以看日志:被抓得多、又确实有外部点击进来的参数页,说明它有存在价值;只有蜘蛛在抓、几乎没人访问的,多半是浪费。
让列表页把详情页带出去
蜘蛛走列表页的最终目的是发现详情页。这里有几个容易出问题的细节:
- 详情链接用 a 标签直接写 href,不要用 onclick 或 data-href 这类渲染后才生成的形式。
- 避免卡片懒加载:链接要随首屏 HTML 一起出现。图片可以懒加载,链接不行。
- 分页深度别太深。重要的详情页尽量出现在前几页,或者通过栏目、标签、专题页做横向入口,减少对深层翻页的依赖。
抓取顺序不等于价值顺序
蜘蛛会按链接位置和站点结构决定优先级,列表里靠前的链接更容易被先抓,但这不是硬性排序,也不代表会收录。把重要的内容放在稳定的入口位置,比指望蜘蛛翻到第 50 页更实际。
用日志核对翻页是否被走通
发布或改版之后,可以按下面的顺序核对一遍:
- 在访问日志里筛出分页 URL,看是否只有第一页反复被抓,后续页几乎没有记录。
- 检查分页 URL 是否返回 200,有没有因为参数过长或超时出现 5xx。
- 看详情页的抓取量是否随翻页推进而增长。如果长期只有从第一页进来的链接被抓,说明路径断了。
- 对比改版前后的抓取分布,确认参数收敛之后,抓取是否转向了更有价值的页面。
翻页和筛选参数本身不是问题,问题是让蜘蛛走进一个没有尽头的组合空间。把参数收敛、把翻页做成真实链接、把详情链接放在首屏,这三件事做完,列表页的抓取路径基本就顺了。