搜索抓取

URL 已发现,为什么还没抓:从提交到抓取的三道检查

很多站点把 URL 提交或写进 Sitemap 后,就等着蜘蛛来抓。但发现和抓取是两回事:前者只让蜘蛛知道 URL 存在,后者才真正发起请求。本文梳理蜘蛛发现 URL 的常见入口,分析发现后没被抓的几类原因,并给出一份从提交到抓取的对账步骤。

搜索抓取

URL 已发现,为什么还没抓:从提交到抓取的三道检查

把 URL 提交给搜索引擎,或者写进 Sitemap,并不等于蜘蛛马上会来抓。很多站点运营者会把“提交”和“抓取”当成一回事,结果在日志里等不到蜘蛛,就开始怀疑提交入口失效。其实,URL 发现和 URL 抓取是两个阶段,中间还隔着队列、优先级、服务器响应等环节。

发现和抓取是两条线

发现,是蜘蛛知道某个 URL 存在,把它放进待抓列表;抓取,是蜘蛛真正发起请求,把页面内容取回去。一个 URL 可以被发现很久却不被抓起,也可以被抓取多次却始终不收录。排查时把这两件事分开看,思路会清楚很多。

蜘蛛发现 URL 的常见入口

  • 外链:其他站点链过来,蜘蛛顺着链接发现你的页面。新站尤其依赖这一点。
  • 站内链接:导航、列表页、正文内链、面包屑,都是蜘蛛在站内继续走的路径。
  • Sitemap:主动告诉蜘蛛有哪些 URL,适合数量多、层级深的页面。
  • 主动提交:搜索资源平台提供的提交入口,可以缩短发现时间,但不保证抓取。
  • 蜘蛛池或诱导抓取:通过大量页面吸引蜘蛛访问,把目标 URL 带进去。它解决的是“被发现”的问题,抓取与否仍要看目标页本身。

发现之后,为什么没抓

1. 服务器和抓取通道

蜘蛛来的时候如果遇到 5xx、超时、连接被重置,或者返回了验证码、登录墙,这次抓取就失败了。失败次数多了,蜘蛛会降低来访频率。检查服务器日志时,不要只看有没有蜘蛛,还要看它拿到的状态码和响应时间。

2. 页面本身的可抓取性

robots.txt 是否误屏蔽、页面是否被 noindex、是否依靠 JavaScript 才渲染出内容、是否有大量重定向,这些都会影响蜘蛛能不能顺利拿到有效内容。尤其注意:被 robots 屏蔽的 URL 可能仍然出现在“已发现”列表里,但蜘蛛不会去抓。

3. 抓取预算和优先级

站点越大,蜘蛛越会挑着抓。它通常优先抓更新频繁、内链多、历史表现好的页面。一个孤立的、没有入链的 URL,即使提交了,也可能排在队列后面。可以把它放进合适的列表页或正文内链里,让它有路径可走。

做一次“发现到抓取”的对账

  1. 从 Sitemap 或提交记录里取一批 URL,作为待核对名单。
  2. 到服务器日志里搜这些 URL,看蜘蛛有没有来过、来的时间、状态码。
  3. 对没来过的 URL,检查它是否有站内入链,是否被 robots 屏蔽,是否在 Sitemap 里可访问。
  4. 对来过但状态异常的 URL,优先修服务器、重定向和渲染问题。
  5. 把修复后的 URL 重新放回内链或 Sitemap,观察下一轮日志。

几个容易踩的误区

  • 提交了就会抓:提交只是发现入口之一,抓取还受队列和优先级影响。
  • Sitemap 写了就会抓:Sitemap 里的 URL 也需要可访问、可索引,否则蜘蛛来了也拿不到东西。
  • 内链多就一定抓:内链数量不是唯一因素,链接所在页面的质量、位置和稳定性也在起作用。
  • 蜘蛛池能替代基础建设:诱导抓取可以增加发现机会,但服务器、内容、内链结构不过关,抓取仍然会卡住。
URL 发现解决的是“蜘蛛知不知道”,抓取解决的是“蜘蛛来不来、拿不拿得到”。把这两步分开排查,比反复提交更有用。

实际运营中,可以固定一个周期,把日志、Sitemap 和内链结构放在一起看。发现入口少了就补入口,入口有了但抓取异常就修服务器和页面。这样一轮一轮下来,URL 从被发现到被抓取的路径才会越来越顺。