常见问题

搜索蜘蛛只访问入口页、没抓目标 URL,该从哪里开始排查?

入口页日志里能看到搜索蜘蛛,却迟迟不见目标 URL 被抓,是很多站点运营者常遇到的问题。本文把入口页日志和目标站日志分开对比,梳理链接不在源码里、nofollow、robots 屏蔽、防火墙拦截、CDN 旧缓存和调度延迟这几类常见原因,并给出一条从确认状态码到源码检查、再到放行规则核对的排查顺序,帮你判断是链路断了还是只是时间没到。

常见问题

搜索蜘蛛只访问入口页、没抓目标 URL,该从哪里开始排查?

做蜘蛛池和 URL 发现的人,经常盯着日志看。最常见的困惑是:入口页的访问日志里明明出现了搜索蜘蛛的 UA,也返回了 200,但目标站那边始终没有对应的抓取记录。这种情况不一定是"蜘蛛池没用",多数时候是某一个环节把链路断掉了。下面按排查顺序拆开说。

先区分三份日志

在排查之前,先确认你看的是哪一份日志,否则很容易得出错误结论。

  • 入口页服务器日志:能看到蜘蛛是否来过、抓的是哪个 URL、返回什么状态码。
  • 目标站服务器日志:能看到蜘蛛是否真的请求了目标 URL、返回什么状态码。
  • 抓取频率的间接证据:比如入口页日志里蜘蛛的访问间隔、抓取条数、是否反复回访。

只有入口页日志、没有目标站日志,说明蜘蛛来过但没顺着链接走;两份日志都有,只是时间差几小时到几天,那属于正常的调度延迟,不算问题。

蜘蛛来了却没抓目标 URL 的常见原因

1. 链接不在初始 HTML 里

如果目标链接是前端 JS 渲染后才出现的,蜘蛛拿到的原始 HTML 里可能根本没有这个 URL。判断方法很简单:用 curl 或者关闭 JS 的浏览器抓一次入口页源码,搜索目标域名。源码里搜不到,就别指望蜘蛛能发现。

2. 入口页本身抓取频率极低

新入口页、权重低的域名、被判定为低质量的页面,蜘蛛可能只抓一次首页就再不来了。只抓一次的时候,它倾向于抽取页面里少量链接,未必会覆盖全部目标 URL。

3. 目标 URL 被某种规则挡住

  • 链接带 rel="nofollow":蜘蛛可能不抓,或者抓了也不传递任何信号。
  • 目标站自己的 robots.txt 屏蔽了对应目录或参数。
  • 目标站防火墙对蜘蛛 UA 或 IP 做了拦截,请求被 403/503 挡回,日志里可能看不到完整记录。
  • 链接经过 301/302 链,中间某一跳被拦截或跳到了不允许抓取的地址。

4. 入口页返回状态有问题

入口页返回 200 但内容为空,或者 CDN 缓存了旧版本,蜘蛛看到的就是旧页面。新加进去的目标链接自然不会被抓。

5. 就是调度延迟

URL 被发现和真正抓取之间隔几天很常见。特别是目标站响应慢、站点整体抓取预算有限时,蜘蛛会把新发现的 URL 排进队列慢慢抓。

建议的排查顺序

  1. 确认入口页返回 200,且缓存已刷新到最新版本。
  2. 用 curl 抓源码,确认目标 URL 确实出现在 HTML 里。
  3. 检查链接是否带 nofollow、是否被 JS 改写或隐藏。
  4. 检查目标站 robots.txt 和防火墙是否放行蜘蛛。
  5. 对比入口页日志和目标站日志的时间戳,判断是不是延迟。
  6. 如果以上都正常,观察一到两周,别急着改结构。

几个容易被误判的情况

蜘蛛抓了入口页却没抓目标 URL,就说明蜘蛛池无效?不一定。发现和抓取是两步,入口页被频繁抓取本身就说明链路存在,只是还没轮到目标 URL。

日志里看不到蜘蛛,就是被屏蔽了?也可能是日志采样、CDN 不回源,或者蜘蛛使用压缩请求导致日志格式不同。

把入口页当成"链接的存放处",而不是"抓取加速器",很多预期落差会小很多。蜘蛛池能影响的是 URL 被看到的机会,不是抓取和收录的结果。

小结

蜘蛛访问入口页、没抓目标 URL,最常见的原因依次是:链接不在源码里、入口页本身抓取频率低、目标 URL 被规则挡住,以及正常的调度延迟。按上面的顺序逐条排除,比反复调整入口页结构更有效。也别忘了,URL 被发现只是第一步,能不能被收录,还要看目标页自身的内容质量。