列表页是很多站点最主要的 URL 出口。商品列表、文章归档、标签聚合页,蜘蛛往往先到这里,再顺着一条条链接走进详情页。如果分页和筛选的写法有问题,蜘蛛要么走不深,要么被大量看似不同、实则重复的地址拖住。
蜘蛛在列表页里是怎么往前走的
蜘蛛进入第一页之后,能看到的链接只有当前页面里真实存在的那几条。要走到第二页,它必须先在页面中找到指向第二页的链接。不少列表页的“下一页”是脚本拼出来的,或者按钮本身不带 href,蜘蛛点不动,抓取就停在第一页。
这不是收录问题,而是通路问题:链接存在与否,决定了蜘蛛有没有路可以走。
分页链接的几种常见写法
- 静态路径分页:如 /list/page/2/,路径可读、可被单独引用,蜘蛛按序推进比较顺畅。
- 参数分页:如 /list?page=2,能抓,但容易和其他筛选参数混在一起,产生组合。
- 按钮加脚本:只有点击事件、没有 href,蜘蛛基本看不到下一跳。
- 无限滚动:视觉上连续,但地址栏不变,除非同时提供可抓取的分页链接兜底。
不必把所有形式都改成静态,但至少要保证第二页、第三页有真实可点的链接存在,让蜘蛛有路可走。
筛选参数带来的 URL 爆炸
排序、价格区间、颜色、尺码、发货地……每加一个可选条件,地址数量就成倍增长。蜘蛛会顺着这些组合一路走下去,结果是大量内容几乎一致的页面被反复抓取,真正的新详情页反而排到后面。
判断标准很简单:这个参数组合出来的页面,用户会不会单独分享、收藏或搜索?如果不会,它大概率只是同一份列表的另一种视图。
把参数收敛起来的三件事
- 用 robots.txt 屏蔽明显无价值的组合参数,但要记得屏蔽抓取不等于屏蔽索引,配合 noindex 更稳妥。
- 给筛选页加上 canonical 指向无参数版本,或者让这类页面直接返回 noindex。
- 分页链接保持纯序列,不要掺杂排序、会话 ID、追踪参数,避免同一页出现多个地址。
翻页请求同样会消耗服务器
蜘蛛翻页时会连续发出请求,速度既取决于它自己的判断,也取决于你的响应。响应慢、超时多,蜘蛛会主动降低抓取频率,列表深处的新 URL 被发现的时间就被拉长。列表页往往是动态查询,数据库压力大,给列表页加缓存、压缩 HTML、缩短首字节时间,收益有时比改链接更直接。
一份简单的自检清单
- 列表第一页能否用普通链接的方式找到第二页?
- 翻到第五页、第十页时,是否还能继续往前翻?
- 分页地址是否只有一种写法,没有重复参数?
- 筛选后的页面是否有 canonical 或 noindex 处理?
- Sitemap 里提交的详情页 URL,在列表页里是否也能走到?
- 列表页的响应时间是否明显慢于详情页?
分页和参数并不是新鲜话题,但它们决定了蜘蛛在站点里能走多深。把列表页的链接写清楚、把重复参数收敛掉、把响应速度提上来,URL 发现的效率通常会更稳定一些。剩下的,交给时间去观察抓取日志里的变化。