搜索引擎蜘蛛爬行日志分析:先看清抓取,再谈优化

搜索引擎蜘蛛爬行日志分析不是看几个访问量数字,而是回答三个问题:谁在抓、抓了哪些 URL、这些抓取是否落在你希望被收录的页面上。本页给出一套从原始日志到结论的完整做法。

服务器访问日志是唯一由你自己掌控、不经过第三方加工的第一手抓取数据。Search Console 的抓取统计通常有 1 到 3 天的延迟,且只覆盖抽样;而 Nginx 或 Apache 的 access.log 记录的是每一次真实请求,包含时间、IP、User-Agent、URL、状态码、响应字节数和耗时。把这两类数据对照起来看,才能判断抓取是否正常。

本页面向已经有一定流量的站点:日抓取请求在几千到几十万次之间,页面数量在数百到数万之间。如果你刚上线、每天只有几十次抓取,日志分析的边际收益很低,优先做站点结构和内链更划算。

阅读顺序建议:先看「为什么看日志」明确目标,再看「日志从哪来」确认数据完整,然后按「清洗流程」逐步处理,最后用「指标对照表」下结论。

日志里常见的爬虫类型

  • Googlebot(Smartphone / Desktop)
  • Bingbot
  • Baiduspider
  • Googlebot-Image / 各类资源爬虫
  • 搜索引擎渲染队列(Rendering)
  • 非搜索类爬虫与伪装爬虫

不同爬虫的抓取目的不同,混在一起统计会得出错误结论,建议在清洗阶段就按类型拆分。

为什么值得花时间做爬行日志分析

日志分析的价值不在报表好看,而在于它能暴露第三方工具看不到的问题。

很多站点在 Search Console 里看到「已发现但未编入索引」的页面数上升,第一反应是内容质量问题。但打开日志一看,往往发现这些页面根本没被请求过——问题出在抓取环节而不是质量环节。日志能把这个区分做出来,避免在错误的方向上改内容。

另一个典型场景是改版。改版后新旧 URL 并存、301 链路过长、内链指向旧地址,这些问题在日志里表现为旧 URL 持续被高频抓取、新 URL 抓取稀少、3xx 响应占比升高。这三个信号同时出现,基本可以确认改版没收干净。

  • 区分「没被抓」和「抓了没收」

    把目标页面清单与日志做交集,未出现的页面属于抓取问题,出现的页面属于内容或质量判断问题。两类问题的处理方式完全不同,混淆会浪费数周时间。

  • 发现抓取预算被低价值 URL 吃掉

    统计抓取频次最高的前 100 个 URL,若其中参数组合页、筛选页、日历页占比过高,说明爬虫把大量配额花在了不需要收录的地址上,核心页面自然抓得少。

  • 验证 robots.txt 与 meta 标签是否按预期生效

    日志里被 Disallow 的路径若仍出现大量请求,说明规则写法有误或存在绕过路径;被 noindex 的页面若持续被抓,说明内链仍在指向它们。

日志从哪里取,取哪几段

数据源不完整会让后面的所有统计失真,先确认这四件事再动手。

  • Nginx / Apache 访问日志

    默认路径通常是 /var/log/nginx/access.log 或 /var/log/httpd/access_log。建议按天切割并保留至少 30 天,覆盖一个完整的抓取周期。

  • CDN 与反向代理日志

    若站点前置了 CDN,源站日志只记录回源请求,会漏掉大量命中缓存的抓取。需要从 CDN 控制台导出边缘日志,或在回源规则里透传真实 UA 与 IP。

  • 负载均衡后的多节点日志

    多台后端时,单节点日志只覆盖部分流量。建议在采集阶段就汇总,或统一投递到日志服务后再分析,避免按节点分别统计造成误判。

  • 日志格式是否包含所需字段

    至少需要 remote_addr、time_local、request、status、body_bytes_sent、http_user_agent、http_referer。若缺少 UA 字段,需要先调整 log_format 再重新积累数据。

六个必须逐一看的字段

日志行很长,但真正影响判断的就是这几个位置,其余字段用于辅助验证。

  • IP 与反向 DNS

    UA 可以伪造,IP 不能。对 Googlebot 的请求做反向 DNS 解析,结果应以 googlebot.com 或 google.com 结尾,再正向解析回同一 IP 才算可信。批量校验建议用脚本处理,不要人工抽查。

  • User-Agent 完整字符串

    注意区分 Googlebot/2.1 与各类带 Googlebot 字样的第三方 UA。统计时按完整字符串分组,而不是按包含关键词匹配,否则会把工具流量算进搜索爬虫。

  • 请求 URL 与查询参数

    保留完整 query string。分析时按路径聚合、按参数拆分,才能看出是哪个参数在制造大量变体地址。

  • 状态码

    200 表示正常返回,301/302 表示跳转,404 表示不存在,5xx 表示服务端异常。按天统计各状态码占比,5xx 出现即需排查。

从原始日志到结论的六步流程

每一步都有明确的输入和输出,按顺序做,不要跳步。

下面这套流程适用于单站点、日请求量在百万行以内的场景。用 awk、grep、sort、uniq 这类命令行工具就能完成大部分工作,不必一上来就上大数据平台。若日志量更大,再把同样的逻辑搬到日志服务里跑。

关键原则是:先缩小范围再统计。直接对全量日志做聚合,既慢又容易把无关爬虫混进来。建议第一步就按 UA 和 IP 校验筛出目标爬虫,后续所有分析都基于这份筛选后的数据。

  1. 第 1 步:按天切分并去重压缩

    用 logrotate 或按日期重命名,保留原始文件。压缩后单日日志通常能缩小到原体积的十分之一,便于长期留存和回溯。

  2. 第 2 步:筛出目标爬虫

    用 grep 匹配 UA 关键字得到候选集,再对候选 IP 做反向 DNS 校验,剔除伪装流量。输出一份干净的爬虫请求清单。

  3. 第 3 步:解析为结构化字段

    用 awk 按空格切分,提取 IP、时间、URL、状态码、字节数、UA 六列,输出为 TSV 或 CSV,方便后续导入表格或数据库。

  4. 第 4 步:按 URL 聚合抓取次数

    对 URL 去参数后排序计数,得到抓取频次分布。重点看前 100 名和长尾部分的差异,判断是否存在抓取集中或过度分散。

  5. 第 5 步:与站点 URL 清单做交集

    导出 sitemap 中的 URL 列表,与日志中的 URL 做集合运算,分别得到「被抓过的」和「从未被抓的」两份清单,后者是优化重点。

  6. 第 6 步:按天对比趋势并下结论

    把上述指标按天排成时间序列,观察 7 天和 30 天的变化。单日异常多为波动,连续 3 天以上的偏移才值得作为结论依据。

指标对照表:看到什么数字,判断什么问题

下表给出常见指标的参考区间和处理方向。区间为行业常见经验值,具体站点需结合自身规模调整。

使用这张表时注意两点。第一,所有比例都要基于「已校验的真实爬虫请求」,未校验的数据没有参考意义。第二,指标之间要交叉看:单看 404 占比高可能是站点改版遗留,也可能是爬虫在探测不存在的参数组合,需要结合 URL 样本判断。

指标常见参考区间异常时的处理方向
核心页面 7 天抓取覆盖率通常应高于 80%低于该值时检查内链层级与 sitemap 是否包含这些 URL
5xx 响应占比一般应低于 1%排查数据库慢查询、缓存击穿、限流规则误伤爬虫
3xx 响应占比一般低于 5%检查跳转链是否超过 2 跳、内链是否仍指向旧地址
404 响应占比一般低于 3%区分真实死链与参数变体,前者修链,后者加规则收敛
参数页抓取占比通常控制在 20% 以内用 canonical、robots.txt 或 URL 规则限制变体扩散
单 URL 日均抓取次数核心页 1 到 5 次较为常见过高说明页面频繁变动或存在重复入口,需检查更新策略

表格里的区间不是标准答案。一个每天更新数百条内容的资讯站,核心页抓取频次天然高于企业站;一个页面总数只有 200 的站点,抓取覆盖率接近 100% 也很正常。判断时应以自身 30 天基线为参照。

四类最常见的误判

这些结论看起来合理,但往往是数据口径出了问题。

  • 把 CDN 命中流量当成没被抓

    源站日志里看不到命中缓存的请求,容易得出「抓取量下降」的结论。实际应看 CDN 边缘日志,或对比开启缓存前后的数据口径。

  • 用 UA 关键字匹配代替 IP 校验

    大量第三方工具在 UA 里带 Googlebot 字样,只按 UA 统计会把工具流量算成搜索抓取,虚高比例有时超过 30%。

  • 忽略渲染请求的重复计数

    同一 URL 在抓取和渲染阶段可能各请求一次,直接计数会高估抓取频次。需要按请求来源或时间间隔做区分。

  • 把单日波动当成趋势

    爬虫调度本身有随机性,单日抓取量上下浮动 20% 属于常见现象。至少观察 7 天再判断是否真的下降。

工具选择与落地做法

从命令行到可视化,按数据量和使用频率选择,不必追求最重的方案。

  • 命令行三件套:grep、awk、sort

    适合日请求百万行以内的场景。一条 grep 加 awk 的组合就能筛出指定 UA 并按 URL 计数,处理一天日志通常在几十秒内完成,无需额外部署。

  • 日志服务与查询语言

    数据量更大或需要多人协作时,把日志投递到日志服务,用类 SQL 的查询语言做聚合。好处是保留原始明细、支持随时改口径重算。

  • 表格工具的透视分析

    把清洗后的 CSV 导入表格软件,用数据透视表按状态码、日期、路径分组。适合快速出结论和小范围汇报,处理上限约几十万行。

  • 自建脚本定期跑批

    把六步流程写成脚本,每天定时执行并输出固定格式的日报。关键是固定口径,保证不同日期的数据可比较,而不是每次临时写查询。

  • 与 Search Console 数据对照

    把日志中的抓取量与 Search Console 的抓取统计放在同一时间轴上对比。两者趋势一致说明数据可信,偏差过大则要检查日志是否完整。

  • 校验 IP 的小工具思路

    用 dig -x 对 IP 做反向解析,再用 dig 对得到的域名做正向解析,两次结果一致才认定为真实爬虫。批量处理时加并发控制和结果缓存。

自己做还是外包:三种投入方式

价格为首年常见投入区间,按站点规模和数据量估算,实际以具体需求为准。

  • 适合技术团队

    自行搭建

    0 到 500 元/年

    用服务器现有资源加开源脚本完成。成本主要是人力:首次搭建约 2 到 3 个工作日,之后每天维护 10 分钟。适合有运维能力、日志量中等的站点。

    了解更多 →
  • 最常见

    半自动方案

    2000 到 8000 元/年

    使用日志服务或现成分析工具的按量计费,配合自写查询。上线周期通常 1 周内,能覆盖多站点和多爬虫类型,适合需要定期出报告的团队。

    了解更多 →
  • 外包分析

    5000 到 30000 元/次

    按项目交付,包含数据接入、清洗、指标分析和一份带优先级的整改清单。周期一般 2 到 4 周,适合改版前后或抓取异常时的一次性诊断。

    了解更多 →

一次完整分析的时间安排

以单站点、数据源不超过三个的项目为例,从接入到出结论的典型节奏。

  • 第 1 天

    确认数据源与字段

    确认日志位置、格式、保留周期,检查 UA 与 IP 字段是否完整,确定需要覆盖的时间范围。

  • 第 2 到 3 天

    采集与清洗

    汇总多节点日志,按爬虫类型筛选,完成 IP 校验,输出结构化数据。

  • 第 4 到 5 天

    基础指标统计

    计算抓取覆盖率、状态码分布、参数页占比等核心指标,形成按天的趋势序列。

  • 第 6 到 10 天

    问题定位与样本核对

    对异常指标抽取 URL 样本逐条核对,区分真实问题与统计口径问题,排除误判。

  • 第 11 到 14 天

    输出结论与整改优先级

    整理成可执行清单,按影响面和改动成本排序,标注每项的验证方式与复查时间点。

日志分析最容易犯的错,是先有结论再找数据。看到流量下降就翻日志找「抓取减少」的证据,往往能在噪声里找到想要的数字。更稳的做法是先固定口径、跑完 30 天基线,再让数据自己说话。抓取量下降、抓取量不变但收录下降、抓取量和收录都正常而排名下降,这三种情况对应的原因完全不同,日志只能回答第一种。

常见误区提醒 · 关于抓取数据的一条经验

常见问题

关于数据来源、周期、成本和风险的六个实际疑问。

日志只保留 7 天,还能做分析吗

可以做,但结论范围受限。7 天数据足以判断当前抓取是否正常、状态码是否健康,但无法判断趋势和改版影响。建议至少保留 30 天,若存储紧张可只保留爬虫相关行,体积通常能降到全量的 10% 到 20%。

为什么日志里的抓取量和 Search Console 对不上

两者口径不同。Search Console 统计的是去重后的抓取统计,且有延迟和抽样;日志记录的是每一次请求,包含渲染、资源抓取和重复访问。偏差在 20% 以内通常正常,偏差过大应检查日志是否完整或是否混入了非搜索爬虫。

没有服务器权限,只有 CDN 后台,怎么办

从 CDN 控制台导出边缘访问日志,字段通常包含 IP、UA、URL、状态码,足以完成大部分分析。注意确认导出的时间范围和采样率,部分服务商的免费套餐会做抽样,需要在结论里注明。

分析一次要花多少钱

自行搭建主要是人力成本,首次约 2 到 3 个工作日。使用日志服务按量计费,日请求百万行级别的站点年费通常在数千元区间。外包单次诊断按项目计价,常见区间在 5000 到 30000 元,取决于数据源数量和交付深度。

发现 5xx 占比偏高,应该先改什么

先定位是哪些 URL 触发 5xx,再看是否集中在某类页面或某个时间段。常见原因是数据库慢查询、缓存失效瞬间的并发穿透、以及限流规则误伤爬虫 IP。处理顺序建议先修服务端稳定性,再考虑调整抓取频率相关的配置。

数据安全上需要注意什么

访问日志包含用户 IP 和访问路径,属于需要控制范围的数据。建议分析环境与生产环境隔离,导出文件脱敏后传输,分析完成后按保留策略清理。若交给外部团队处理,应在协议中明确数据用途、保存期限和删除方式。

下一步可以做什么

如果只想先验证方向,从最小的一步开始即可。

关于本页与反馈

本页内容基于公开的爬虫行为说明与常见运维实践整理,持续修订。

本页不提供自动化分析服务,也不收集站点日志。所有方法均可使用自有服务器和开源工具复现。文中给出的参考区间来自公开文档与常见实践,不同站点规模和行业差异较大,请以自身 30 天基线为准。

如果你在实践中遇到与文中描述不一致的情况,欢迎通过邮件说明场景:站点日抓取量级、使用的日志来源、观察到的异常指标。描述越具体,越容易判断是口径问题还是真实异常。