搜索抓取

抓取覆盖率上不去:路径断点常出现在这四个位置

抓取覆盖率迟迟上不去,很多时候不是蜘蛛没来,而是走到中段就断了。本文从入口链接、内链模板、Sitemap 与实际 URL 的差异、服务器负载四个位置,梳理抓取路径的常见断点,并给出一个可以照着走的日志自查顺序,帮助把发现路径重新接起来。

搜索抓取

抓取覆盖率上不去:路径断点常出现在这四个位置

很多站点的问题不是“蜘蛛不来”,而是来了之后走不远。首页有抓取记录,栏目页偶尔出现,再往里的详情页几乎没有动静。这种时候继续加大提交量、堆 Sitemap,效果通常有限——路径中间已经断了,蜘蛛到不了后面。

先分清是“抓不到”还是“抓得慢”

在服务器日志里按天筛一遍,把被抓的 URL 按目录层级归类。如果某一层级的 URL 从头到尾都是零,那更像是路径断点;如果每一层都有,只是数量偏少,那更像抓取频次和速率的问题,两者的处理方向完全不同,别混在一起改。

断点常出现在四个位置

1. 入口页自己能抓,但入口本身没被链接

新目录、新专题页如果只出现在首页某个轮播位,或者靠 JavaScript 动态插入,蜘蛛第一跳未必能碰到。更稳妥的做法是在静态 HTML 里留一条普通的 a 标签,位置不必显眼,但要长期稳定存在。

2. 内链只在模板的边角出现

  • 相关推荐模块由前端请求填充,抓到的 HTML 里是空的;
  • 列表页只渲染前十条,其余靠“加载更多”按钮;
  • 面包屑存在,但指向的是搜索页或带参地址,不是静态路径。

这些结构在用户侧体验不差,但对抓取路径来说等于把中间一段挖掉了。可以把一部分链接直接写进首屏 HTML,哪怕只放十几条,也比全靠异步加载更容易被继续跟进。

3. Sitemap 里的 URL 和站内实际情况对不上

Sitemap 是补充通道,不是替代品。如果里面混着大量 404、长跳转链、noindex 页面,蜘蛛按图索骥走一遍,收获的是一串无效地址,反而消耗了这次访问的余量。定期把 Sitemap 与真实返回 200 的 URL 做比对,清理已经下线的条目,比新增条目更划算。

4. 爬到一半站点自己顶不住

抓取正在展开时,如果服务器开始返回 5xx、响应时间从几百毫秒跳到几秒,蜘蛛通常会主动降速甚至暂停。日志上看起来就是“抓取量突然掉了一截”。这时候与其去调站点地图,不如先看这段时间的负载、慢查询和回源情况。

层级变深之后,路径需要重新设计

当站点从几百个 URL 涨到几万个,原来“首页—栏目—详情”的三层结构往往撑不住。可以按主题或地域再补一层聚合页,让每个详情页距离首页不超过四跳;同时给聚合页留稳定的内链入口,避免它们只靠 Sitemap 被发现,一旦 Sitemap 出问题就整体失联。

一个可以照着走的自查顺序

  1. 取最近七天的日志,按目录层级统计被抓 URL 数量,找出断层的那一层;
  2. 在浏览器禁用 JavaScript,访问断层上一层的页面,看能否看到指向下一层的链接;
  3. 抽查断层层的 URL,确认返回码、canonical、robots 元标签是否正常;
  4. 把 Sitemap 与这批 URL 对照,去掉返回非 200 的条目;
  5. 观察改动之后两三周的日志,看是否出现了新的被抓层级。

路径顺畅之后,再谈节奏

路径打通只是让蜘蛛“能走到”,走得多快取决于站点还能给出多少余量。长期在线的站点,抓取深度自然会往下延伸;经常超时的站点,即使链接结构再规整,蜘蛛也会在某一层停住。

把内链、Sitemap 和服务器状态当作同一条链路上的三段来看:任何一段断开,后面做得再细也发挥不出来。