常见问题

入口页有抓取记录、目标 URL 却没动静,按这个顺序排查

搜索蜘蛛来抓入口页,不等于目标 URL 会被发现和抓取。本文把「入口页被抓 → 链接被解析 → 目标 URL 被抓」拆成三段,从状态码、响应体大小、链接是否在服务器返回的 HTML 里,到目标 URL 的 robots 限制、跳转链和抓取节奏,给出一个可以照着走的排查顺序,帮你在日志里找到真正卡住的那一环。

常见问题

入口页有抓取记录、目标 URL 却没动静,按这个顺序排查

入口页在访问日志里出现了搜索蜘蛛的记录,确实让人安心,但它只说明门口被敲过,不代表门后的目标 URL 会被发现并抓取。下面按从近到远的顺序,把常见的卡点逐一排查一遍。

先分清两件事:没被抓,和抓了没用

很多站长把蜘蛛来过入口页,直接等同于目标 URL 会被收录。实际上这是三段独立过程:入口页被抓取 → 页面里的链接被解析并加入待抓队列 → 目标 URL 被抓取并进入索引。任何一段断掉,外部看到的现象都是目标 URL 没动静。

第一步:确认入口页是真的被完整读取

  • 看状态码是不是 200。返回 403、429、5xx 的访问,蜘蛛大概率什么都没拿到。
  • 看响应体大小。如果抓取记录显示只拿到几百字节,可能是被 WAF、验证页或默认错误页截断了。
  • 看是否被压缩、编码异常或分块传输出错,导致解析器读不出链接。
  • 用自己的浏览器或命令行工具,用同样的路径再请求一次,确认服务端对匿名访问返回的内容一致。

第二步:确认蜘蛛看到的 HTML 里确实有链接

这一步最容易想当然。你在浏览器里看到的链接,不一定是服务器直接返回给你的那份 HTML 里的链接。

  • 用查看源代码而不是开发者工具的元素面板,搜索目标 URL 的特征片段。
  • 如果链接只存在于 JavaScript 渲染后的 DOM 里,就需要评估搜索蜘蛛是否执行脚本、执行是否稳定。
  • 如果链接被 CSS 隐藏、塞在注释里、或写在脚本字符串里,命中概率会明显不同。
  • 如果入口页对不同 UA 输出不同内容,要用蜘蛛的 UA 实际请求一遍,看返回结果。

第三步:确认目标 URL 自身可抓

  • 目标站点的 robots.txt 是否屏蔽了对应路径。
  • 目标站点是否对蜘蛛 UA 或常见抓取 IP 段返回 403 或验证码。
  • DNS 解析、TLS 证书、重定向链是否正常,有没有形成循环跳转。
  • 目标 URL 是否只对特定地区或登录状态开放,公开抓取时拿到的是空页或错误页。

第四步:确认链接指向的地址足够干净

入口页里的链接如果经过多层跳转、带一长串参数,或者每次访问拼出来的地址都不一样,蜘蛛解析到的 URL 可能和你的预期不一致,也容易被当成重复地址处理。

  • 跳转链尽量短,最终地址最好直接写在链接属性里。
  • 去掉只用于统计的参数,保留真正影响内容的参数。
  • 同一个内容尽量只暴露一个规范地址,避免同一页面对应几十个变体。

第五步:看抓取节奏,别用小时级的耐心下结论

蜘蛛对新入口页的抓取往往分批次进行,间隔几天甚至更长都算正常。观察时建议按天统计入口页的访问次数、返回码分布,以及目标 URL 首次出现的时间,而不是盯着一两个小时就判断蜘蛛不来。

第六步:把提交手段当作补充而不是依赖

站点地图和主动提交可以帮蜘蛛更快知道链接存在,但它们不能替你把链接写进可解析的 HTML 里。如果前面几步就有问题,提交只会让蜘蛛反复撞上同一个坑。

每一步的结论都要有日志或抓取记录支撑。凭感觉判断蜘蛛不来,常常会把问题查到错误的方向上,改来改去反而把原本正常的入口页改坏了。

一份可以照着走的最小清单

  1. 入口页:状态码、响应体大小、匿名访问内容是否一致。
  2. 链接:是否出现在服务器返回的 HTML 源码中,是否可被解析。
  3. 目标 URL:robots 限制、状态码、跳转链、参数与规范化。
  4. 节奏:按天统计抓取与首次出现时间,给足一个完整观察周期。

按这个顺序走一遍,通常能定位到具体是哪一段出了问题。真正需要调整的往往只有一两个点,改完再观察一个完整的抓取周期,比反复折腾入口页结构更有意义。