搜索抓取

抓取预算被谁吃掉了:从访问日志里找出蜘蛛绕圈子的入口

从日志出发,梳理蜘蛛在站内绕圈子的几类常见形态:筛选参数、空列表页、站内搜索与孤岛页面,并给出聚类、对照、按序处理的检查步骤,帮助运营者把抓取机会花在真正有内容的页面上。

搜索抓取

抓取预算被谁吃掉了:从访问日志里找出蜘蛛绕圈子的入口

很多站点在谈抓取时,容易把它当成一个“总量”问题:蜘蛛一天来了多少次、抓了多少条 URL。但实际运营中更有用的视角是:这些抓取机会被花在了哪些页面上,其中多少是真正有内容的页面,又有多少只是蜘蛛在站内绕圈子。

先明确一点:抓取预算由两边共同形成

所谓“抓取预算”,并不是一个官方公布的配额,更像是站点侧和搜索引擎侧行为叠加出来的结果:一边是蜘蛛愿意投入的并发与访问频率,另一边是站点的响应速度、URL 总量和链接结构。前者你影响有限,后者才是可以动手的地方。

所以判断预算是否被浪费,不要靠猜,要看日志。

几类常见的“吃预算”形态

  • 筛选参数组合:颜色、排序、页码互相叠加,生成大量内容几乎相同的地址。哪怕每个页面都能正常打开,也会持续占用抓取机会。
  • 空结果页与空列表页:返回 200 但列表为空,蜘蛛下次仍可能再来走一遍。
  • 站内搜索结果页:如果对蜘蛛开放,很容易被当成新内容反复抓取。
  • 会话 ID、跟踪参数:同一内容被拆成多条地址,发现路径被稀释。
  • 孤岛页面:只存在于 Sitemap、站内没有任何入口,抓到一次之后缺少回访路径。
  • 分页链太深:列表页很靠后的条目,抓取价值往往低于抓取成本。

从日志里怎么看出来

不需要复杂工具,先做三步对照。

  1. 按蜘蛛 UA 过滤出一天或一周的请求,按路径前缀聚类,看请求量最高的目录是哪些。
  2. 对每个高频目录,抽几条看状态码和页面标题:是正常内容、空页,还是参数变体。
  3. 再对照这些路径是否出现在内链或 Sitemap 中。如果高频路径大多来自参数拼接而非正常入口,基本可以确认是在绕圈子。

处理顺序:先堵住入口,再谈优化

不少人第一反应是去 Sitemap 里删地址,但 Sitemap 只是发现渠道之一,真正的持续来源往往还是站内链接。顺序上更稳妥的做法是:

  1. 对无价值参数地址,用 robots.txt 规则或页面级 noindex 做区分处理,注意两者作用并不相同。
  2. 检查站内链接,尤其是导航、面包屑和列表模板,别把参数地址直接写进 href。
  3. 把真正需要被抓的内容放进稳定的内链路径,让蜘蛛每次到达之后有明确的下一步。
  4. 保证响应稳定,避免大量 5xx 或连接超时,把抓取机会消耗在无意义的重试上。

这几步里,模板层面的修改往往见效最慢但最彻底:一个循环里多写了一层参数,就会让整站多出成千上万条地址;改一次模板的成本,通常比后来一遍遍收拾日志低得多。

抓取效率的改善通常是渐进的。处理掉一类冗余入口之后,未必立刻看到收录量的变化,但日志里“无意义请求”的占比会先降下来,这才是相对可观察的信号。

几个不建议的做法

  • 为了“让蜘蛛多来”而人为堆砌内链或入口页面,短期请求量会涨,但抓的多半是你自己造出来的页面。
  • 直接屏蔽整个目录,可能连带屏蔽掉有价值的页面;屏蔽前先按路径粒度确认。
  • 频繁改动 robots.txt 并期待立刻见效,蜘蛛对新规则的反应需要时间。

把日志当成一张站内地图,定期看看蜘蛛实际走的是哪几条路,比单看收录数字更能说明结构上的问题。