常见问题

入口页加了链接但抓取没反应:按顺序排查这几个方向

给入口页加了链接,日志里却看不到目标页被抓,原因往往集中在几个固定环节。这篇文章给出一个可执行的排查顺序:先分清是没发现还是发现了没抓,再依次检查入口页抓取状态、链接是否在初始 HTML 里、目标页是否放行、站点抓取额度,以及 URL 提交在这中间能起什么作用。

常见问题

入口页加了链接但抓取没反应:按顺序排查这几个方向

给入口页加了一批链接,服务器日志里却没有对应的抓取记录,或者只有入口页被反复抓、里面的目标页一次都没来。这种情况原因通常集中在几个固定环节,按顺序排查比反复改页面更省事。

先分清是“没发现”还是“发现没抓”

这两种情况处理方式完全不同,判断依据是日志。

  • 没发现:日志里完全看不到搜索蜘蛛访问目标 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 送进待抓取队列,属于提示性质,不是保证。当入口页里的链接被发现得很慢时,可以同时提交入口页和目标页,用来对比究竟是哪一端卡住了。

建议的排查顺序

  1. 确认入口页本身是否被抓、返回什么状态码。
  2. 取一份入口页的原始 HTML(不要用浏览器渲染后的结果),确认链接在不在里面。
  3. 在日志里搜索目标 URL,看有没有请求记录、返回什么状态。
  4. 检查目标页的 robots 规则、noindex、跳转链和响应时间。
  5. 以上都正常,再去看域名历史、抓取额度和入口页规模的问题。
排查期间尽量只改一个变量,改完至少观察几天。同时调整 robots、链接位置和提交方式,最后很难判断是哪一项起了作用。

入口页只是把地址暴露出来,能不能被跟进、跟进后能不能被处理,取决于目标页和站点整体状态。把这几步拆开看,问题通常不难定位。