搜索抓取

抓取覆盖率怎么核对:从日志看蜘蛛走完了多少 URL

日志里抓取请求不少,唯一 URL 却长期停滞,往往说明覆盖率出了问题。本文讲清分母怎么定、日志该看哪几列、频次与状态码怎么配合解读,以及发现死角后按服务器、可达性、结构、发现通道的顺序怎么调整。

搜索抓取

抓取覆盖率怎么核对:从日志看蜘蛛走完了多少 URL

蜘蛛每天来多少次,并不等于它把站点走完了。很多站点日志里的抓取请求看起来不少,但唯一 URL 数长期停在某个水平,新增页面迟迟不出现在抓取记录里。想把这件事说清楚,需要一个可核对的口径:抓取覆盖率。

先定分母:哪些 URL 算“该被抓”

覆盖率的分母不能随手拿全站 URL 数。更稳妥的做法是先列出站点愿意被蜘蛛抓取的 URL 集合,再分层统计。

  • 入口层:首页、栏目页、频道导航这类长期存在的页面。
  • 内容层:文章、商品、详情等正文页面,通常是站点的主要内容载体。
  • 辅助层:标签页、筛选页、分页,是否纳入分母取决于你是否希望它们被抓。

把这三层分开算,比混在一起算一个总数更有意义。内容层覆盖率高、辅助层低,和整体覆盖率 60% 是两种完全不同的状态。

日志里至少要读的四列

  • 请求路径:确认 URL 是否规范化过,带参数和不带参数会被算成两条记录。
  • 状态码:200、301、304、404、5xx 分开统计,304 偏多说明蜘蛛在重复访问同一批页面。
  • 蜘蛛标识与时间:区分不同蜘蛛,按天看频次变化,而不是只看总量。
  • 来源或抓取入口:有 referrer 记录时,可以看出这条请求是通过内链还是从 Sitemap 进来的。

覆盖率之外的三个观察点

覆盖率高不代表抓取健康,还要一起看:

  • 抓取频次分布:如果首页和列表页占了绝大多数请求,深层页面只是偶尔被碰到,说明路径并不通畅。
  • 状态码结构:5xx 和超时比例偏高时,蜘蛛通常会降低访问频率,覆盖率也会跟着下滑。
  • 抓取深度:可以从入口页按内链层级估算,看蜘蛛实际走到的层级和站点结构是否匹配。

几个常见的误读

  • 把 304 当成“没抓”:304 也是一次有效访问,只是内容未变。
  • 只看总请求数:请求数上升可能只是同一批页面被反复抓。
  • 把 Sitemap 提交量当成已抓取量:提交只是告知,不等于被抓。

发现死角之后,按这个顺序改

  1. 先修服务器侧问题:5xx、超时、TLS 握手失败优先,这些会直接影响蜘蛛的抓取节奏。
  2. 再修可达性:确认死角页面能从入口页经过少量内链点到,没有只能靠 JS 渲染才出现的链接。
  3. 然后修结构:把重要页面从深层目录或孤岛状态中拉出来,放进栏目页或相关推荐位。
  4. 最后补充发现通道:Sitemap 分片、RSS、提交接口各自承担一部分,互相不冲突。
覆盖率是结果指标,不是原因指标。它低下来时,要回到路径、状态码和服务器响应上找原因。

把这三层分母、四列日志和上面几个指标固定成一张表,按周看变化,比每次重新翻日志更容易发现趋势。真正的抓手往往不在“蜘蛛为什么不来”,而在“来了之后卡在哪一步”。