搜索抓取

Sitemap 索引与子地图路径错配:抓取入口发现缺口的核对清单

Sitemap 索引文件能访问,不代表里面引用的子地图都能被抓到。本文从索引可访问性、子地图路径一致性、robots 规则、压缩编码和抓取日志几个角度,梳理常见的入口遗漏场景,给出可逐项核对的步骤,帮助定位提交正常但 URL 发现量不足的问题。

搜索抓取

Sitemap 索引与子地图路径错配:抓取入口发现缺口的核对清单

抓取入口通常从哪里来

蜘蛛发现 URL 的入口主要有几类:站内链接、外部链接、Sitemap,以及历史抓取记录。Sitemap 不是收录保证,但它能帮助爬虫更快知道哪些 URL 值得来看。当 Sitemap 索引文件本身能访问,而里面引用的子地图存在问题,表面看提交正常,实际可用入口会少一截。

常见错配表现

  • 索引里写了十来个子地图,抓取日志里只见到两三个。
  • 某个子地图路径改过,索引里仍留着旧地址。
  • 子地图返回 301、404 或 403,但索引文件本身是 200。
  • 子地图所在目录被 robots.txt 的规则误拦。
  • 压缩文件未正确声明类型,或未压缩却按 gzip 处理。

按顺序核对

  1. 先确认索引文件可访问:在无登录态下请求,看状态码、Content-Type 和响应体是否完整。
  2. 逐个请求子地图:索引里有几条就取几条,记录状态码、响应大小和最终地址,不要只抽查一两个。
  3. 检查路径一致性:大小写、结尾斜杠、协议与域名是否与线上实际路径一致。Sitemap 中的 URL 对大小写敏感,多一个斜杠可能落到另一个地址。
  4. 检查 robots.txt:确认 Sitemap 指令写的是索引地址,同时没有把子地图目录整体禁止抓取。
  5. 核对响应头:子地图若为 .gz,确认 Content-Type 为 application/x-gzip 或 application/gzip,并确保服务器不会对它二次压缩。
  6. 用抓取日志反查:看蜘蛛是否请求过索引和子地图,状态码分布如何,是否在某个子地图上频繁失败或长时间不访问。

几个容易忽略的细节

数量与体积上限

单个 Sitemap 建议不超过 5 万条 URL,未压缩时不超过 50MB。超出后应拆分为多个子地图,再用索引统一引用。拆分时不要把同一批 URL 重复放进多个子地图,重复入口会浪费抓取配额,也让统计变得混乱。

lastmod 不要随意刷

lastmod 记录的是内容真实修改时间。如果每次部署都批量更新为当前时间,短期可能增加抓取,长期会让这个字段失去参考价值。核对分片时,重点应放在子地图能否访问、URL 是否完整,而不是把时间戳当作调度开关。

索引只放子地图,不混放页面 URL

sitemap index 的 sitemap 标签里应指向子地图文件,不要直接写页面 URL。混放容易导致解析失败,或部分条目被忽略。

与内链和服务器稳定性配合

Sitemap 解决的是告知,内链解决的是可达。如果一个页面只在 Sitemap 里出现,站内没有任何链接指向它,爬虫即使抓取到,也不容易持续回访。建议关键页面至少有导航、列表或相关推荐中的一条内链。服务器方面,子地图请求也应保持稳定响应,频繁超时会让爬虫降低对这类入口的访问频率。

提示:Sitemap 只是入口线索,不能替代内链结构,也不意味着提交后一定被抓取或收录。用抓取日志验证实际请求,比盯提交状态更有意义。

小结

先保证索引文件被正确读取,再逐个确认子地图可访问、路径一致、编码正确,最后用抓取日志对照实际请求。三步做完,多数提交了但没被抓的入口缺口,都能定位到具体位置。