很多站点并不是没有内容,而是内容所在的页面,蜘蛛走不到。抓取路径连通性,说的是从站点的入口页出发,能不能沿着一条条链接,稳定、连续地走到目标页面。它不决定页面是否被收录,但会明显影响 URL 被发现的效率和抓取的顺畅程度。
一条完整的抓取路径长什么样
把抓取路径拆开看,通常经过三层:入口层(首页、频道页)、分发层(列表页、分页、聚合页)、落地层(详情页、文章页)。蜘蛛从入口进来,靠内链一层层往下走,同时参考 Sitemap 里提交的 URL 作为补充线索。
这三层只要有一层出问题,后面的页面被访问的机会就会减少。实际排查时,与其盯着某一个页面,不如沿着这条路径走一遍,看它在哪一步断掉。
三层里最常见的断点
入口层:入口太少或太单一
- 首页只链到少数几个栏目,其他栏目要靠站内搜索或导航展开才能到达。
- 频道页内容量很大,但链接都放在需要交互(点击、悬停、滚动加载)之后才出现。
- 入口页返回状态码不稳定,蜘蛛首轮拿到空内容,后续不再深入。
分发层:列表与分页被截断
- 列表页只输出第一页的链接,第二页之后依赖按钮或脚本请求,蜘蛛拿不到。
- 分页用的是带参数的地址,参数组合过多,蜘蛛容易在同一个列表里反复打转。
- 默认筛选条件生成大量相似列表,把抓取引到了重复内容上。
落地层:详情页之间没有横向连接
- 详情页只有返回列表的链接,没有相关推荐、上下篇、同栏目链接。
- 相关推荐由前端异步加载,首轮 HTML 里是空的。
- 正文中的链接用了跳转脚本或不可识别的方式,蜘蛛无法顺着继续走。
服务器与响应时间对路径的影响
路径再顺,也架不住服务器拖后腿。响应时间波动大、间歇性返回 5xx,或某些目录被访问策略拦截,都会让蜘蛛在这一段主动降低抓取量。表现是:入口页抓得不少,越往下越少,日志里能看到同一个目录反复返回错误。
所以排查时要把两件事分开看:一是链接结构本身通不通,二是路径上的节点能不能稳定响应。前者改模板和内链,后者要看服务器、缓存和访问策略。
一份可执行的检查清单
- 关闭 JS,用纯文本方式抓取首页,看看能发现多少个链接、指向哪些栏目。
- 从首页出发,手动模拟点到目标详情页,记录需要几次点击、中间经过哪些页面。
- 检查这些中间页面是否都返回 200,是否存在重定向链过长或返回空内容的情况。
- 核对 Sitemap 中的 URL 与内链能到达的 URL 是否一致,有没有大量只出现在 Sitemap 里的孤岛地址。
- 在抓取日志中按目录统计访问量,找出“入口多、下游少”的那一段。
- 观察服务器响应时间的高峰时段,和抓取量下滑的时间点是否重合。
修复的先后顺序
通常先修入口和分发层,因为这两层的改动收益比较直接:让更多页面在更少的跳转内被链接到,抓取路径会明显变短。再处理落地层的内链,把同主题页面互相连起来,减少只能靠列表页才能到达的页面。
Sitemap 适合做补充,而不是替代内链。内链负责“走得通”,Sitemap 负责“提醒还有哪些”。两者不一致时,优先相信内链能到的那部分。
抓取路径的问题,多数不是“蜘蛛不来”,而是“走到一半没路了”。把路径一段段走通,比反复提交 URL 更有效。