页面迟迟不进索引,常见的归因是“内容质量不够”。但真实情况里,有相当一部分页面卡住的原因更简单:蜘蛛根本没走到它面前,或者只是从一条质量很差的路径扫到了它。日志能把这些路径摊开来看,比反复提交 URL 更有用。
日志里值得盯的几列
不用做很复杂的分析,先把下面几列固定下来,按天聚合就够用:
- 请求时间:判断是集中抓取还是零星路过。
- User-Agent:区分真正的搜索蜘蛛和其他爬虫、以及伪装的采集程序。
- 请求路径:注意带上参数的完整形式,参数常常是问题的来源。
- 状态码:200 不代表内容被采纳,但 404、410、5xx 值得单独看。
- 响应体大小:很小的响应往往是空壳页或跳转页。
多数日志会带 Referer,但蜘蛛经常不发送,所以不能只靠它判断来源。更可靠的做法是把日志路径和站内结构、sitemap 内容做交叉比对。
页面通常从哪几条路径被发现的
- 内链:最稳定的一条。前提是链接出现在可抓取的 a 标签里,而不是靠点击事件触发。
- sitemap:适合补充收录,不适合当成唯一入口。sitemap 里写了,只代表“被知道”,不代表会被优先抓取。
- 外链:从别站带过来的入口,日志里表现为路径突然出现,且站内没有指向它的链接。
- 重定向链:旧地址 301 到新地址,蜘蛛会顺着走,但如果链条太长,容易在中间断掉。
- 自动生成的 URL:筛选参数、排序参数、站内搜索结果页,这类地址常常自己繁殖出一大批。
把日志和索引状态对上
日志只能说明“来过”,索引状态只能说明“现在的结果”,两者要放一起看才有意义:
- 按周导出日志,先筛出搜索蜘蛛的请求。
- 按路径聚合,统计每个 URL 被请求的次数和首次出现时间。
- 区分首次抓取和重复抓取:同一个 URL 一周被请求几十次却没有内容变化,多半是抓取资源分配不合理。
- 抽样一批 URL,逐一核对当前的索引状态。
- 把样本分成三组:抓取过且已索引、抓取过但未索引、从未被抓取。三组的问题解法完全不同。
几个容易被误读的现象
- 蜘蛛来过等于会收录:两者中间还隔着内容判断这一步。
- 抓取频次高等于页面重要:高频往往发生在老 URL 或频繁变动的列表页上。
- 日志里有路径就等于有内链:外链、历史地址、甚至是别人抓取工具带过来的请求都会留下记录。
- 状态码 200 就等于正常:返回一个“正在加载”的空页面也是 200。
日志的用途不是证明页面被收录,而是回答一个问题:蜘蛛是沿着哪条路走到这里的,这条路值不值得继续走。
发现路径有问题时的调整顺序
- 先修内链:确认重要页面从首页出发能在少数几次跳转内点到,且链接是可抓取的。
- 再收 URL 暴露面:把无检索价值的参数页、站内搜索结果页做统一处理,减少蜘蛛在低价值地址上的消耗。
- 然后整理 sitemap:只放规范地址和确实希望被收录的页面,不要把所有生成的 URL 都塞进去。
- 最后观察:调整后留出两到四周,重新对比日志中的路径分布和索引状态样本,看变化是否出现在预期的那一类页面上。
把这套对照做熟之后,收录问题会从“猜原因”变成“查路径”。大多数卡住的页面,答案就在日志里那几行请求记录上。