常见问题

蜘蛛池入口页提交后迟迟不抓取,排查顺序该从哪里开始

蜘蛛池入口页提交后在日志里迟迟没有动静,问题往往不在提交本身。本文按页面可访问性、robots 限制、服务器拦截、URL 一致性、抓取配额、链接可发现性六个层次给出排查顺序,并说明如何用服务器日志区分“入口页根本没抓”和“目标 URL 没被发现”这两种情况。

常见问题

蜘蛛池入口页提交后迟迟不抓取,排查顺序该从哪里开始

把入口页提交到搜索引擎的推送接口或 sitemap 之后,很多人就默认“接下来它会自己来抓”。实际上提交只是把 URL 放进候选池,是否真的被抓、什么时候被抓,还要经过状态码、robots、服务器拦截、抓取配额等一系列判断。任何一层不通,日志里都可能安静得像什么都没发生。

提交成功只说明请求被接收

推送接口返回成功、sitemap 状态显示正常,这些反馈仅表示平台收到了这条 URL。它既不代表已经排进抓取队列,也不代表抓取优先级被提高。所以“提交了”和“被抓了”之间,必须用日志去验证,而不是靠感觉判断。

排查顺序:从入口页自身开始往回查

1. 入口页能否稳定返回 200

  • 用不带登录态、不带 Cookie 的方式请求一次,看是否返回 200 且内容非空;
  • 检查是否存在软 404:状态码是 200,页面却只有一句“内容不存在”;
  • 确认链接是否出现在原始 HTML 里,而不是完全依赖脚本渲染。

2. robots.txt 与页面级限制

入口页被 Disallow 挡住,或者页面带有 noindex,都会影响后续抓取。要注意 robots 是按路径前缀匹配的,一条写错的规则很容易连带把整批入口页一起挡住。

3. 服务器和中间层是否拦了爬虫

  • WAF、防火墙、CDN 的 Bot 规则可能对搜索蜘蛛返回 403 或验证码页;
  • 频率限制过严时,蜘蛛第一次能进来,后面就被持续限流;
  • 部分云服务默认屏蔽某些 IP 段,会导致对应来源的爬虫无法访问。

4. 提交的 URL 与页面里的链接是否一致

大小写、末尾斜杠、协议、参数顺序、多余跟踪参数,只要有一处不同,就可能被当成另一个 URL。排查时以页面里实际输出的链接为准,而不是后台记录的那一条。

5. 站点整体的抓取配额

抓取配额有限的站点,新提交的 URL 往往排在后面。如果站内本身有大量低质量页面、重复内容或者长期超时的地址,配额会被消耗在这些地方,入口页自然轮不上。

6. 入口页到目标 URL 的链接是否真的存在

有时候入口页确实被抓了,但里面的链接是空的、被脚本后置插入的、或者被条件判断隐藏了,目标 URL 依然发现不了。这一层的问题通常要在渲染后的 DOM 里才看得出来。

日志是唯一可靠的验证方式

把服务器日志里的蜘蛛访问单独筛出来,重点看三件事:

  1. 蜘蛛是否来过入口页,返回码是多少;
  2. 入口页被访问后,隔多久来抓目标 URL;
  3. 目标 URL 的返回码和响应时间是否正常。

如果入口页有访问、目标 URL 一直没来,问题多半出在链接可发现性上;如果入口页本身就没访问,那就要往前面的状态码、robots 或拦截层去找。这两个方向搞反,改再多结构也是白费。

几个容易忽略的细节

  • 新域名前期抓取本来就慢,不必急着大改结构;
  • 同一批入口页不要在同一天全部改版,否则很难对比前后差异;
  • 调整之后至少观察一到两周,再判断有没有效果;
  • 不要为了“让蜘蛛来”而反复改动,频繁变动反而会降低稳定性。
提交是起点,不是结果。能不能被抓、抓多少,最终取决于入口页是否可访问、链接是否可发现、站点整体是否值得信任。