想了解蜘蛛到底怎么走站点,服务器日志是最直接的一手材料。它记录的是已经发生的事,不依赖任何工具的估算。但日志也最容易被过度解读:抓取次数多不等于抓得好,5xx 变少也不等于问题解决了。看日志之前,先明确自己想回答的是哪类问题——“哪些 URL 被抓了”“抓的时候服务器回了什么”“哪些页面一直没被抓”,而不是笼统地看“今天蜘蛛来了多少次”。
先把日志里的三类信息分开
- 请求本身:时间、IP、User-Agent、请求方法、完整 URL(含参数)。
- 响应结果:状态码、响应体积、响应耗时。
- 来源线索:Referer 有时能看出蜘蛛是从哪个页面走到这个 URL 的。
把这三类分开看,很多疑问会自然消失。比如“蜘蛛是不是不喜欢我的新页面”,往往只是新页面还没有被站内链接指向,日志里自然不会出现。
值得长期盯的几个信号
状态码的分布
200 之外的部分更值得关注。404 集中出现,说明站内仍有指向失效地址的链接,蜘蛛每次都白跑一趟;301 链过长,说明跳转没有收敛到最终地址;5xx 与超时则会影响抓取节奏,蜘蛛遇到连续失败通常会放慢速度、拉开间隔。304 是正常现象,表示蜘蛛在做条件请求、页面没有变化,不算抓取失败。
被抓的 URL 是不是你想被抓的
如果日志里大量出现筛选、排序、会话参数拼出来的地址,而有用的内容页反而出现得少,说明抓取路径被参数入口分走了。这时先检查内链和 sitemap 里的 URL 写法,再考虑其他原因。
同一 URL 的重复抓取
短期内反复抓同一个地址,通常意味着页面有更新信号,或者这个地址被多处链接引用。前者是正常的;后者要看是不是内链冗余,是否值得调整链接位置,让链接集中到更有价值的地址上。
抓取时段与频次的变化
频次突然下降,可能出在服务端(响应变慢、错误率上升),也可能出在站点本身(长期不更新、内容结构发生变化)。连续看两周的趋势,比盯着某一天的峰值有意义得多。
容易被误读的几种情况
- User-Agent 可以伪造:日志里自称蜘蛛的请求不一定是蜘蛛,必要时用反向 DNS 校验身份。
- CDN 命中时源站日志是空的:边缘节点直接返回缓存,源站看不到这次抓取,容易得出“蜘蛛没来”的错误结论。要分析抓取,最好取边缘节点日志,而不是只看源站。
- 被抓不等于被收录:日志只说明请求发生过,页面是否进入索引是另一回事,两者不要混着判断。
- 抓取量下降不一定有问题:清理掉大量重复的参数 URL 之后,抓取总量下降反而是一次正常的收敛。
用日志反过来推进 URL 发现
- 把 sitemap 里的 URL 与日志中实际被抓的 URL 做一次对照,找出“提交了但从没被抓过”的部分,优先检查这些页面的内链入口。
- 找出“被抓过却没有内链指向”的孤岛页面,为它们补上自然、相关的链接路径。
- 结合 Referer,确认重要的内容页是否真的处在离首页几步之内就能被点到的位置。
- 翻出 404 日志里的来源页面,把失效链接修掉或换成有效地址,避免蜘蛛每次都走进同一条死胡同。
日志是过程指标,不是结果指标。它适合用来发现抓取路径上的问题,不适合用来判断页面本身的好坏。
把日志当成一张路线图来看,比当成一张成绩单更有用。定期对照 sitemap、内链结构和状态码分布,通常就能找到抓取路径里最明显的那几处断点。