入口页在访问日志里出现了搜索蜘蛛的记录,确实让人安心,但它只说明门口被敲过,不代表门后的目标 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 里。如果前面几步就有问题,提交只会让蜘蛛反复撞上同一个坑。
每一步的结论都要有日志或抓取记录支撑。凭感觉判断蜘蛛不来,常常会把问题查到错误的方向上,改来改去反而把原本正常的入口页改坏了。
一份可以照着走的最小清单
- 入口页:状态码、响应体大小、匿名访问内容是否一致。
- 链接:是否出现在服务器返回的 HTML 源码中,是否可被解析。
- 目标 URL:robots 限制、状态码、跳转链、参数与规范化。
- 节奏:按天统计抓取与首次出现时间,给足一个完整观察周期。
按这个顺序走一遍,通常能定位到具体是哪一段出了问题。真正需要调整的往往只有一两个点,改完再观察一个完整的抓取周期,比反复折腾入口页结构更有意义。