收录出问题时,很多人的第一反应是重新提交站点地图,或者再发一批外链。但如果连搜索蜘蛛有没有来、来了之后看到的是什么都不知道,这些动作基本是在猜。服务器日志记录的是真实发生的抓取行为,它比后台报表更早、更细地反映问题出在哪一环。
先分清发现、抓取、收录三段
一个 URL 从存在到进入索引,大致要经过三步:被蜘蛛发现、被抓取、被判定值得收录。日志只能看到前两步,但也正因如此,它能帮你把问题范围缩小。如果日志里根本没有这个 URL,说明卡在发现环节;如果抓了却迟迟不进索引,问题多半不在抓取,而在页面本身。
线索一:蜘蛛来的频次和深度够不够
把日志按天统计,至少看三个维度:
- 总量:整站每天的蜘蛛请求数是否稳定,突然归零或骤降通常意味着屏蔽、封禁或解析异常。
- 分布:请求是集中在首页和几个老页面,还是能覆盖到新目录、深层页面。
- 新 URL 覆盖率:把站点地图里的新 URL 和日志交叉比对,看有多少真的被访问过。提交了一千条,日志里只出现一百条,说明发现或抓取环节存在限制。
线索二:蜘蛛拿到的是什么状态码
状态码直接决定蜘蛛能不能继续往下走。在日志里筛出蜘蛛请求后,按状态码分组统计占比:
- 200:正常返回。注意看是否存在大量返回 200 的空页面,这类软 404 会消耗抓取又拿不到有效内容。
- 301/302:检查跳转链是否过长,是否出现循环跳转。
- 404/410:内链或站点地图里是否还指向已经不存在的地址。
- 403/429/5xx:被防火墙拦、被限流或服务端报错,持续出现会明显拖慢抓取节奏。
另外留意响应时间。如果蜘蛛请求的耗时普遍偏高,抓取频次往往会被动下降。
线索三:蜘蛛抓的是不是你希望被收录的 URL
日志里经常出现一些意料之外的地址:带各种参数的筛选页、大小写不同的变体、尾斜杠有无两种版本、拼接了会话参数的动态链接。这些 URL 被抓走,等于把抓取额度花在了你并不想收录的页面上,真正的内容页反而排到了后面。
做法是把日志里的 URL 按目录和参数特征归类,看看抓取量最大的那批地址,是不是你心里认定的重点页面。如果不是,优先从内链和站点地图上收敛入口。
日志的边界:抓了不等于收录
日志能证明蜘蛛来过,但不能证明它会收录。抓取是动作,收录是结果,中间还隔着内容质量、重复度和页面价值的判断。
所以日志更适合用来排除低级问题:没被抓、抓错地址、被抓时返回错误状态。这些排掉之后,如果收录仍不理想,就该回到页面本身去找原因。
一份可执行的自查顺序
- 先确认日志留存和采样是否完整,CDN 或负载均衡层的日志也要一并拿到。
- 按 UA 筛出主流搜索蜘蛛,再按天、按目录统计请求量。
- 用站点地图与日志交叉比对,算出新 URL 的实际被抓比例。
- 按状态码分组,找出异常占比最高的一类。
- 列出被抓取最多的 URL,判断是否与重点页面一致。
- 针对发现的问题做调整,之后观察一到两周再复看。
几个容易误判的点
- 蜘蛛 UA 可以被伪造,看到陌生地址不要立刻当成官方蜘蛛处理,必要时做反向解析验证。
- 日志时间通常是服务器时区,统计时注意与后台报表口径对齐。
- 抓取量下降不一定代表被惩罚,也可能是站点内容更新放缓后的自然结果。
- 数据缓存会让日志看起来滞后,先排除缓存再下结论。