给入口页加了一批链接,服务器日志里却没有对应的抓取记录,或者只有入口页被反复抓、里面的目标页一次都没来。这种情况原因通常集中在几个固定环节,按顺序排查比反复改页面更省事。
先分清是“没发现”还是“发现没抓”
这两种情况处理方式完全不同,判断依据是日志。
- 没发现:日志里完全看不到搜索蜘蛛访问目标 URL,连一次请求都没有。问题多半出在链接没被解析、入口页没被抓,或者链接被挡在抓取之前。
- 发现没抓:日志里能看到目标 URL 的请求,返回 3xx、4xx、5xx,或者蜘蛛很快就走了。问题多在目标页状态或抓取节奏上。
要提醒的是,日志只能说明蜘蛛来过、请求了什么、返回什么状态,并不能说明 URL 是否被索引。索引状态要在搜索控制台里看,两边数据对不上是正常的。
几个常见的排查方向
入口页本身有没有被正常抓取
- 入口页是否长期返回 5xx、经常超时,或者被 CDN 挡在缓存后面
- robots.txt 有没有误屏蔽入口页所在目录
- 入口页是否被注释或规则限制,导致它自身很难被发现
- 站点是否为新域名、域名是否有过不良历史
链接是不是真的在初始 HTML 里
- 链接由 JavaScript 在客户端渲染生成,蜘蛛拿到的是空骨架
- 链接放在 iframe、表单按钮或图片热区里
- 链接被样式隐藏,或放在需要点击展开的区域
这几种写法并不是完全不能被处理,但被发现的时间会拉长、被跟进的比例会下降。想让结果稳定一些,关键链接尽量写在初始 HTML 的链接标签中。
目标页这一端是否放行
- 目标页返回 404、410、5xx,或者链路里有多层跳转
- 目标页目录被 robots.txt 的 Disallow 屏蔽
- 目标页带有 noindex、nofollow,或响应头与 meta 里的规则写法冲突
- 目标页需要登录、Cookie 或验证码才能返回正文
这里有一个容易被混淆的点:robots.txt 的 Disallow 会让抓取请求根本不发出;noindex 是抓取之后才生效,蜘蛛仍然会来访。两者在日志里的表现完全不同,不要放在一起判断。
站点整体的抓取额度
同一域名下的入口页数量突然放大,抓取请求会大量集中到入口页上,目标页分到的次数就少了。这种情况在新站或者权重不高的站上比较常见。可以先把入口页规模收敛,把链接位置和目标页质量处理好,再观察日志里目标 URL 的抓取是否慢慢出现。
URL 提交能帮上什么忙
手工提交、sitemap、API 推送的作用是把 URL 送进待抓取队列,属于提示性质,不是保证。当入口页里的链接被发现得很慢时,可以同时提交入口页和目标页,用来对比究竟是哪一端卡住了。
建议的排查顺序
- 确认入口页本身是否被抓、返回什么状态码。
- 取一份入口页的原始 HTML(不要用浏览器渲染后的结果),确认链接在不在里面。
- 在日志里搜索目标 URL,看有没有请求记录、返回什么状态。
- 检查目标页的 robots 规则、noindex、跳转链和响应时间。
- 以上都正常,再去看域名历史、抓取额度和入口页规模的问题。
排查期间尽量只改一个变量,改完至少观察几天。同时调整 robots、链接位置和提交方式,最后很难判断是哪一项起了作用。
入口页只是把地址暴露出来,能不能被跟进、跟进后能不能被处理,取决于目标页和站点整体状态。把这几步拆开看,问题通常不难定位。