为什么要按层读,而不是逐条看
不少站长打开日志就开始搜自己的目标 URL,翻了几页没找到,就下结论说“蜘蛛不来”。日志动辄几十万行,逐条看既看不出趋势,也容易把偶发当成常态。更实用的做法是先分层:状态码看健康度,路径看分配是否合理,频次看是否跟得上更新节奏。三层看完,问题基本能落到具体位置。
第一层:状态码分布
把日志按天汇总,分别统计 2xx、3xx、4xx、5xx 的占比,重点看变化趋势,而不是某一个绝对数值。
- 5xx 抬头:先查服务器与上游服务。蜘蛛遇到连续错误通常会主动降频,恢复访问节奏需要一段时间。
- 4xx 变多:常见原因是内链指向了已删除页面、旧链接没有收尾,或者模板批量生成了无效地址。
- 3xx 长期偏高:说明站内存在大量跳转入口,抓取时间被消耗在跳转路上。
除状态码外,还要留意返回内容明显偏小或为空的记录,这类往往是软 404 或只加载了一半的页面。
第二层:路径归类
把 URL 按目录前缀或页面模板分组,统计每组的抓取次数,这一步能看清蜘蛛的时间花在了哪里。
- 列表页、翻页、筛选参数这类入口型页面,抓取量是否高得反常;
- 真正有内容价值的详情页,是否有稳定的抓取记录;
- 是否存在只被抓过一次、之后再也没有回访的孤岛路径。
归类粒度不必太细,能区分内容页、列表页、参数页、静态资源和接口地址就够了。分完组再对照内链结构和 sitemap,通常能直接找到偏差来源。
如果某类页面长期零抓取,先确认它是否有可被跟随的站内入口,再检查是否被规则或参数拦截,不要急着归因于“蜘蛛不重视”。
第三层:回访频次
挑一批有代表性的 URL,看它们两次被抓之间隔了多久,以及每次抓取是否拿到了新版本。频次高但内容没变,说明更新信号不准确;频次极低而页面确实在更新,说明入口或 sitemap 的提示不够。
抓取频次是结果,不是能单独调的目标。它由站点整体质量、更新节奏和服务器响应共同决定。
几个容易读错的地方
- 按 UA 过滤时要写全,同一蜘蛛可能存在多个 UA 变体,漏掉会低估抓取量。
- 日志默认时区未必与本地一致,做跨天统计前先统一口径。
- CDN 或反向代理日志记录的可能是边缘节点信息,与源站日志合并时要先去重。
- 抓取次数多不等于收录情况好,这两件事需要分开判断。
读完日志要落到动作
把结论整理成一份短清单,每一项都要能对应具体操作:修掉持续返回 5xx 的接口、清理指向死链的内链、收敛没有意义的参数入口、给重要页面补充站内入口、按真实更新时间维护 sitemap 的 lastmod。
改完之后隔一到两周,再用同一口径读一次日志,对比状态码分布和各类路径的抓取量变化。这种前后对照,比凭感觉判断问题有没有解决要可靠得多。