搜索抓取

Sitemap 里被悄悄忽略的条目:常见写法问题与自查方法

提交 Sitemap 只是把 URL 放进候选清单,蜘蛛仍会按自己的规则筛选。本文整理了常见的 Sitemap 写法问题——状态码异常、被 robots 屏蔽、noindex、lastmod 失真等,并给出抽样自查与定期清理的方法,帮助减少无效条目对抓取资源的占用。

搜索抓取

Sitemap 里被悄悄忽略的条目:常见写法问题与自查方法

Sitemap 提交之后,不少人会默认“清单里的 URL 都会被访问”。实际并不是这样。Sitemap 的作用是给蜘蛛一份候选清单,降低 URL 发现的成本;至于某个 URL 什么时候抓、抓不抓,仍由蜘蛛根据自身判断决定。清单里如果堆了太多质量不高的条目,反而会稀释真正需要抓取的那部分页面。

一、蜘蛛读 Sitemap 时会做哪些基本筛选

拿到清单后,蜘蛛通常会先做一轮低成本判断,把明显不值得抓的条目排到后面:

  • 状态码:长期返回 404、410 的条目,反复确认无果后优先级会下降;返回 5xx 的则会先搁置。
  • 可抓取性:被 robots.txt 屏蔽的 URL,即便写在 Sitemap 里也无法被抓取。
  • 索引指令:页面带 noindex 时,蜘蛛可能仍会来读取指令,但不会进入索引。
  • 重复性:指向同一内容的大量近似 URL,通常只有 canonical 指向的那个更可能被保留。
  • 可访问性:登录墙后、返回 403、需要特定请求头才返回 200 的页面,抓取价值会被打折。

二、Sitemap 文件本身的写法问题

有些条目被忽略,原因不在页面,而在清单文件本身:

  • 单文件超过 5 万条 URL,或未压缩体积超过 50MB,却没有拆分成索引文件。
  • 未启用 gzip 压缩,传输成本偏高。
  • XML 转义错误、特殊字符未编码,导致解析中断。
  • 全站 lastmod 被统一刷成同一时间,甚至写成未来时间。
  • 混入带跟踪参数、大小写不一致的非规范 URL。
  • 同时提交 http 与 https、带 www 与不带 www 的多份重复清单。

三、lastmod 的可信度问题

lastmod 是蜘蛛判断“要不要重新来一趟”的参考之一。如果每次生成清单都把全部时间戳刷新一遍,这个字段就失去了区分度,蜘蛛只能把它当默认值处理。跟随内容真实变更而更新的时间戳,才有参考意义。另外,changefreq 与 priority 目前更多是提示性的,不必花太多精力反复调参。

清单越干净,蜘蛛越容易在里面找到真正值得抓的东西。

四、抽样自查可以怎么做

  1. 从 Sitemap 中随机抽 30 到 50 条 URL,用脚本或爬虫请求一遍,记录状态码与最终落地 URL。
  2. 对照 robots.txt,确认抽到的 URL 没有被 Disallow 规则误伤。
  3. 检查页面是否带 noindex,或 canonical 指向了另一个地址。
  4. 在搜索控制台查看 Sitemap 报告,关注“已提交”与“已编入索引”之间的差距,以及报错提示。
  5. 在服务器日志里筛选 Sitemap 文件的请求记录,看它是否被定期抓取,以及抓取之后是否出现了新 URL 的访问。

五、什么时候该清理条目

建议按季度,或在站点改版、栏目合并之后清理一次。长期返回 404 或 410、又没有替代页面的旧地址;被合并掉的分类页;由筛选参数组合生成的大量无效页;已经整站迁移走的旧域名路径,都可以从清单里移除。保留状态码正常、可索引、有独立价值的页面,清单越精简,参考价值越高。

最后提醒一句:Sitemap 只是辅助手段。它既不保证收录,也替代不了内链结构带来的 URL 发现路径。把清单维护干净、把页面本身做好,才是更稳妥的做法。