很多站点的抓取量并不小,但真正有搜索需求的页面拿到的抓取次数却很少。把服务器日志按 URL 形态分一下组,问题往往就露出来了:大量抓取落在带参数的筛选页、排序页和分页组合上。这些页面本身不一定有错,但它们会持续消耗蜘蛛的抓取额度,让核心页面的发现和更新被拖慢。
参数页为什么容易扩散
一个 200 条商品的列表页,颜色、尺码、价格区间、排序方式彼此相乘,理论上能生成几百上千个 URL。更麻烦的是这些链接常常互为入口:筛选页之间互相链接,蜘蛛顺着点,很快就进入组合空间。再叠加分页参数,深度还会继续展开。
模板层面看,这类链接多数是硬编码输出的,蜘蛛每抓一次列表页,就重新拿到一批参数链接。抓取量因此像滚雪球一样往上走,而详情页的抓取次数几乎没变。
先判断哪些参数页有价值
- 有独立搜索量的筛选组合,比如“品牌 + 型号”,通常值得保留,可以有自己的落地页;
- 纯排序参数(sort=price_asc)、会话类参数(sid、from)、纯展示参数(view=list)一般没有独立价值;
- 只有当某类参数页被真实用户从搜索进入时,才说明它有资格被单独抓取。
判断依据来自两处:搜索后台的落地页数据,以及服务器日志里蜘蛛对这些 URL 的抓取频率和返回状态。如果一批参数页长期只被抓、几乎没有访问,也没有外部链接支撑,那它多半只是在占用抓取额度。
收敛的几种做法
用 robots 还是用 canonical
完全屏蔽某类参数,用 robots.txt 的 Disallow 最直接,但要小心:屏蔽之后蜘蛛读不到页面上的 canonical 和 nofollow,原本已经建立的链接关系也会被切断传递。更稳妥的顺序是,先确认这些 URL 没有被外部引用,再决定屏蔽范围。对必须让蜘蛛读到、但不希望被大量抓取的页面,用 canonical 指向主版本更合适。
canonical 要指向真实页面
排序、追踪参数指向无参主 URL,能让蜘蛛把抓取和权重集中过去。注意 canonical 要指向真实可访问、内容一致且返回正常的页面,不要指向 404 或者一个并不存在的“理想地址”。
从入口层减少出口
把筛选入口收进需要交互才触发的形式,比如点击后再请求数据,能明显减少蜘蛛第一轮抓到的参数 URL 数量。这一步的优先级高于事后屏蔽,因为它从源头减少了 URL 的产生。
分页参数要单独对待
分页不是筛选,不要一律屏蔽。常见做法是保留分页 URL 可抓,但让分页序列保持干净,避免“筛选 + 分页”的笛卡尔积。同时确认分页列表里的详情链接能被抓到,否则蜘蛛翻到第五页就断了通向详情页的路径,前面的抓取也跟着浪费。
蜘蛛池带来的流量怎么落
用蜘蛛池给站点引蜘蛛时,落点很关键。如果引来的蜘蛛被送到带一串参数的入口页,它会顺着参数链走很远,真正需要覆盖的页面反而没被碰到。落点优先选干净的分类页、栏目页或最近的更新列表,让蜘蛛第一步就落在内链稳定、能通向详情的页面上。
核对清单
- 从日志里按 URL 形态分组,统计各形态的抓取次数占比;
- 找出抓取多、无搜索需求、无外链的参数页;
- 检查页面模板,看这些链接是硬编码输出还是可以收敛;
- 需要保留的加 canonical,确认无外链且无价值的再考虑 robots 屏蔽;
- 调整前后各观察一到两周,确认抓取量是转移到了核心页,而不是凭空消失。
参数治理不必一次做完。先处理抓取量最大的一两类参数,观察抓取分布的变化,再决定下一步。改动之后至少留一到两个蜘蛛重访周期,再看数据是否朝预期方向移动。
一点提醒:参数页收不收敛,要以日志和搜索数据为依据,不要凭“看起来像重复”就屏蔽。误屏蔽造成的损失,通常比多抓一批参数页更难恢复。