蜘蛛抓取这件事,很多站长是靠“今天抓了多少次”来判断的。次数当然要看,但只看次数容易得出错误结论:抓取量涨了,可能是蜘蛛在反复抓同一批带参数的 URL;抓取量跌了,也可能只是它在消化已有页面。把日志当成一份原始记录来读,能看出更多东西。
日志里最值得看的几列
- 状态码:200 是正常;301/302 说明还在走跳转;404/410 说明链接指向已失效;403 常见于防火墙或 CDN 拦截;429、503 说明服务端在限流或过载。按状态码分类统计一遍,比单看总量有用得多。
- 响应时间与响应字节数:蜘蛛每次都要花上秒级才拿到响应,或者返回的字节数远小于页面实际大小(被截断、返回空壳 HTML),都需要回服务端复核。
- User-Agent:区分 Googlebot、Bingbot、百度蜘蛛等。不同蜘蛛的节奏不一样,混在一起统计会互相干扰。
- 请求路径:把同一目录下的抓取次数排序,能看出蜘蛛偏好走哪条路径,也能发现某些目录从未被抓过。
从日志里能算出的三个指标
有效抓取比例
用 200 状态码的请求数除以蜘蛛的全部请求数。这个比例偏低,通常意味着大量请求耗在重定向、错误页或参数变体上,而不是耗在真正的内容页上。
URL 覆盖率
分母是你希望被发现的 URL 总数,可以拿 Sitemap 或整理好的内链清单来当基准;分子是日志里真实出现过的 URL 数。这个数字才能反映“发现”有没有缺口。
抓取分布在哪些层级
用 URL 路径深度粗略估算,看蜘蛛是主要停在列表页,还是能落到详情页。如果深层页面在日志里长期缺席,问题往往出在内链而不是服务器。
几个常见卡点
- 5xx 与超时集中出现:先确认是不是某个时段、某台机器或某个接口的问题,而不是整个站点都不稳定。
- 403 反复出现:可能是安全策略把蜘蛛误判成了攻击流量,需要核对 User-Agent 并做 IP 反查。
- 302 链太长:蜘蛛跟着跳,既消耗抓取额度,也容易丢参数。
- 同一内容被多种参数写法抓取:说明站内链接或推送清单里混进了带参数的 URL,需要统一规范。
- robots.txt 拦住了本该被抓的目录:这种情况在日志里的表现是“根本没有请求”,所以不能只在日志里找答案。
日志只记录了蜘蛛来过的请求,没来的页面不会留下任何痕迹。判断“发现缺口”必须把日志和 Sitemap、内链清单放在一起比对。
观察节奏与真伪核对
不需要每天盯。建议按周汇总一次,保留 30 到 90 天,重点看趋势而不是单日波动。改版、换 CDN、调整 robots.txt 的前后各留一段对照数据,结论会清晰很多。
另外要确认日志里的蜘蛛是真的。用 User-Agent 配合反向 DNS 反查,或对照搜索引擎官方公布的 IP 段,避免把伪装爬虫的流量当成搜索蜘蛛,否则所有结论都会偏。