很多人排查抓取问题,习惯直接从单个页面看起:这页有没有被抓、返回什么状态码。但蜘蛛不是凭空找到页面的,它是沿着一条条链接走过来的。如果中间某一段路走不通,单个页面看起来再正常也没用。画一张抓取路径图,就是把“从哪个入口进来、经过哪几层、最后到达目标页”这件事写清楚。
先确认蜘蛛有哪些入口
入口通常来自这几类:
- 首页,权重最高、也最常被抓取的起点;
- Sitemap 里列出的 URL,蜘蛛会按清单直接抓取;
- 站外引用带来的链接,比如外部页面、社交平台、行业目录;
- RSS 或其他订阅式输出。
把这些入口逐个列出来,标注各自能覆盖到哪些栏目。如果所有入口最终都指向同一批页面,说明路径过于集中,一旦这条线出问题,覆盖范围会整体缩水。
按层级标出每条路径
从入口出发往下画三到四层,把每层用到的链接形式记下来:是导航、面包屑、正文内链,还是列表页翻页。同一个目标页如果只有一条路径能到,就在图上标成单点;有三条以上,标成多点。
这一步不用画得多精细,重点是找出两类页面:只靠一条路径才能到达的,以及路径层级超过四层的。这两类最容易在抓取中被漏掉。
用日志验证,而不是靠猜
画完图之后,去服务器日志里对照。筛选搜索蜘蛛的 UA,看它实际抓了哪些 URL、抓取顺序是什么、有没有在某一层就停了。常见的情况是:图上画的路径存在,但日志里蜘蛛压根没走那条线,原因是那段链接由 JavaScript 渲染、被 nofollow 标记,或者被 robots.txt 挡掉了。
另一种情况更隐蔽:蜘蛛走到了某一层,但那一层返回 5xx 或者响应超时,后面的路径就断了。这种情况要看状态码统计,而不是只看被抓 URL 的总量。
Sitemap 是补充,不是替代
有人会想,既然 Sitemap 已经把 URL 都列出来了,路径图还有必要吗?两张清单的作用不一样。Sitemap 告诉蜘蛛“有这么些页面存在”,路径图说明“这些页面之间是怎么连起来的”。蜘蛛顺着内链走的时候,会顺带拿到链接周围的上下文;只靠 Sitemap 单独喂 URL,页面的相对位置和重要性就少了参照。比较稳的做法是两者对齐:Sitemap 里的 URL 都应该能通过至少一条内链路径走到。
几类常见的断点
- 入口太单一:只有首页一条线,栏目页全靠首页链接,改一次首页就影响全局。
- 中间层是空壳:列表页没有可用的静态链接,或者链接指向的参数 URL 被屏蔽。
- 深层页面无内链:详情页只在搜索结果里出现,没有常驻入口。
- 服务器不稳定:同一条路径偶尔 5xx,蜘蛛重试几次后会降低抓取频率。
修的时候按路径顺序来
不要一上来就改内链。先修状态码和响应速度,保证已有的路是通的;再补入口,给只有一条路径的页面加第二条;最后才考虑把深层页面往上提,比如加相关推荐、标签聚合页。每改一步,隔几天回日志里看同一批 URL 的抓取情况,确认路径真的走通了,而不是改了就算完。
路径图不是一次性的文档。站点结构、模板、导航一改,路就变了。定期自己从入口页出发走一遍全站,比盯着单个页面的抓取状态更有用。