搜索抓取

抓取陷阱与路径收敛:蜘蛛为什么会在某些页面里绕不出来

日历归档、参数组合、无限滚动和站内搜索结果页,都可能让 URL 数量无限增长,把抓取额度消耗在低价值地址上。本文从日志信号出发,说明如何判断抓取陷阱,并通过 robots 规则、canonical、分页入口、内链收敛和 Sitemap 控制来收拢抓取路径,同时提醒服务器稳定性对抓取频次的影响。

搜索抓取

抓取陷阱与路径收敛:蜘蛛为什么会在某些页面里绕不出来

站点里有些页面,蜘蛛进去之后就很难“出来”。它们本身不算坏页面,服务器也正常,但链接一层层展开,URL 数量可以无限增长。抓取量看着在涨,真正有价值的页面反而被抓得更少。这类结构通常被称为抓取陷阱,处理它的思路不是让蜘蛛多抓,而是把路径收拢。

一、常见的“越走越多”结构

  • 日历归档:每个日期、每周、每月各有一个列表页,年份还能继续向前或向后翻。
  • 参数组合:筛选、排序、视图模式、每页条数互相叠加,同一个列表能生成成百上千个地址。
  • 无限滚动:滚动加载把内容拼在当前 URL 上,但地址本身没有变化,或者变化方式不可控。
  • 站内搜索结果页:用户能搜出多少词,就可能被外部链接带出多少结果页。
  • 需要登录才有意义的页面:购物车、订单、个人中心被内链或外链暴露后,蜘蛛抓到的只是登录提示。

二、陷阱出现时,日志里通常有什么

几个可以观察的信号:

  • 同一批 URL 在日志里高频出现,内容却高度相似;
  • 抓取总次数上升,但页面有效覆盖没有同步变化;
  • 重要栏目的被抓频次下降,说明抓取额度被分走了;
  • 日志中大量 URL 带参数,而这些参数并不影响实际返回内容。
抓取量本身不是成绩单。站点需要的是有效 URL 被稳定覆盖,而不是让蜘蛛在同一片区域里来回走。

三、把路径收拢的几种做法

1. 明确可抓取边界

对确实没有收录价值的组合页,可以在 robots.txt 里按路径规则拦掉一部分,减少无效抓取。要注意 robots.txt 只影响“抓不抓”,并不阻止 URL 从外部被发现;同时不要用它遮挡重要内容。

2. 给路径一个“到此为止”的信号

分页页面尽量提供明确的可抓取分页地址,并在页面顶部或底部说明当前页码;无限滚动建议保留一个可分页访问的版本,避免只有一个不断加载的入口。筛选页可用 canonical 指向无参数版本,减少重复地址的扩散。

3. 内链只指向你想让蜘蛛走的路

列表页、标签页、相关推荐之间的互链最容易失控。常见问题是每个筛选结果都互相链接,形成网状结构。可以让内链集中在稳定的入口页,组合页主要靠筛选操作或站内搜索到达。

4. Sitemap 用来兜底,不用来堆量

Sitemap 适合放稳定、希望被发现的 URL,里面的地址应能返回正常状态码。如果把参数组合页、已失效页面都塞进去,反而会占用抓取资源。

四、排查顺序

  1. 从日志里按抓取次数排序,找出被高频访问的 URL 群;
  2. 看这些 URL 的来源,判断是内链、Sitemap 还是外部链接带进来的;
  3. 抽几个 URL 检查返回内容,确认是否为无价值组合或重复内容;
  4. 针对来源处理:收紧内链、调整 canonical、更新 Sitemap、必要时补 robots 规则;
  5. 改完后继续观察日志,确认抓取是否回到重要目录。

五、别忘了服务器这条线

如果服务器响应慢、频繁超时或返回 5xx,蜘蛛会主动降低抓取频次,队列里未完成的 URL 会被反复重试。此时路径收敛的效果不容易看出来,因为抓取本身就处在不稳定状态。把首字节时间、错误率稳定住,再谈结构优化,顺序会更顺。

抓取路径的收敛是长期工作,不同站点的合理边界并不相同。建议以自己的日志数据为准,先解决明显的泄漏点,再逐步调整。