把 URL 提交给搜索引擎,或者写进 Sitemap,并不等于蜘蛛马上会来抓。很多站点运营者会把“提交”和“抓取”当成一回事,结果在日志里等不到蜘蛛,就开始怀疑提交入口失效。其实,URL 发现和 URL 抓取是两个阶段,中间还隔着队列、优先级、服务器响应等环节。
发现和抓取是两条线
发现,是蜘蛛知道某个 URL 存在,把它放进待抓列表;抓取,是蜘蛛真正发起请求,把页面内容取回去。一个 URL 可以被发现很久却不被抓起,也可以被抓取多次却始终不收录。排查时把这两件事分开看,思路会清楚很多。
蜘蛛发现 URL 的常见入口
- 外链:其他站点链过来,蜘蛛顺着链接发现你的页面。新站尤其依赖这一点。
- 站内链接:导航、列表页、正文内链、面包屑,都是蜘蛛在站内继续走的路径。
- Sitemap:主动告诉蜘蛛有哪些 URL,适合数量多、层级深的页面。
- 主动提交:搜索资源平台提供的提交入口,可以缩短发现时间,但不保证抓取。
- 蜘蛛池或诱导抓取:通过大量页面吸引蜘蛛访问,把目标 URL 带进去。它解决的是“被发现”的问题,抓取与否仍要看目标页本身。
发现之后,为什么没抓
1. 服务器和抓取通道
蜘蛛来的时候如果遇到 5xx、超时、连接被重置,或者返回了验证码、登录墙,这次抓取就失败了。失败次数多了,蜘蛛会降低来访频率。检查服务器日志时,不要只看有没有蜘蛛,还要看它拿到的状态码和响应时间。
2. 页面本身的可抓取性
robots.txt 是否误屏蔽、页面是否被 noindex、是否依靠 JavaScript 才渲染出内容、是否有大量重定向,这些都会影响蜘蛛能不能顺利拿到有效内容。尤其注意:被 robots 屏蔽的 URL 可能仍然出现在“已发现”列表里,但蜘蛛不会去抓。
3. 抓取预算和优先级
站点越大,蜘蛛越会挑着抓。它通常优先抓更新频繁、内链多、历史表现好的页面。一个孤立的、没有入链的 URL,即使提交了,也可能排在队列后面。可以把它放进合适的列表页或正文内链里,让它有路径可走。
做一次“发现到抓取”的对账
- 从 Sitemap 或提交记录里取一批 URL,作为待核对名单。
- 到服务器日志里搜这些 URL,看蜘蛛有没有来过、来的时间、状态码。
- 对没来过的 URL,检查它是否有站内入链,是否被 robots 屏蔽,是否在 Sitemap 里可访问。
- 对来过但状态异常的 URL,优先修服务器、重定向和渲染问题。
- 把修复后的 URL 重新放回内链或 Sitemap,观察下一轮日志。
几个容易踩的误区
- 提交了就会抓:提交只是发现入口之一,抓取还受队列和优先级影响。
- Sitemap 写了就会抓:Sitemap 里的 URL 也需要可访问、可索引,否则蜘蛛来了也拿不到东西。
- 内链多就一定抓:内链数量不是唯一因素,链接所在页面的质量、位置和稳定性也在起作用。
- 蜘蛛池能替代基础建设:诱导抓取可以增加发现机会,但服务器、内容、内链结构不过关,抓取仍然会卡住。
URL 发现解决的是“蜘蛛知不知道”,抓取解决的是“蜘蛛来不来、拿不拿得到”。把这两步分开排查,比反复提交更有用。
实际运营中,可以固定一个周期,把日志、Sitemap 和内链结构放在一起看。发现入口少了就补入口,入口有了但抓取异常就修服务器和页面。这样一轮一轮下来,URL 从被发现到被抓取的路径才会越来越顺。