Sitemap 在蜘蛛池里的定位
蜘蛛池的入口页数量通常不小,只靠内链和导航让蜘蛛慢慢爬,发现速度有限。Sitemap 的价值在于把一批 URL 一次性摊开给搜索引擎,省掉中间跳转。它不是收录保证,本质上只是主动报备:告诉爬虫这些地址存在、大概多久会变一次。
不少人把 Sitemap 当成入口页的主要发现渠道,更合理的定位其实是补充——内链负责持续抓取和页面之间的传递,Sitemap 负责新页面的首次发现,以及存量页面发生变化时的通知。
提交方式与接入顺序
- 在 robots.txt 中声明 Sitemap 地址,一行一条,写完整的绝对 URL。
- 在搜索引擎后台手动提交,用于观察抓取和索引状态。
- 使用主动推送接口,适合新入口页快速触达。
- 用索引文件(sitemap index)聚合多个子 Sitemap,方便分批管理。
顺序上建议先保证 robots 声明正确,再考虑推送。robots 里的路径写错,后面的工作基本都白做。
文件粒度:一个文件放多少 URL
单文件上限一般是 5 万条 URL、50MB 未压缩体积,超过就要拆分。对蜘蛛池来说,不建议一个文件塞到上限,原因有两个:一是抓取异常时排查困难,二是每次更新都要重新生成整份文件,成本高。
- 按批次拆:每一批入口页对应一个子 Sitemap,方便整批下线。
- 按类型拆:入口页、目标页、栏目页分开,便于分别观察数据。
- 单文件控制在几千条以内,生成和更新都更轻。
lastmod、changefreq 与 priority 怎么写
这三个字段最容易被滥用。lastmod 必须真实:如果每次生成文件都把时间刷成当前时间,爬虫很快会发现这个信号不可信,之后就不再参考它。changefreq 和 priority 目前多数搜索引擎只作参考,填 always 或 1.0 并不会换来额外抓取,反而显得刻意。
建议:lastmod 只在页面内容真正变化时更新;changefreq 按实际更新节奏填 daily、weekly 或 monthly;priority 可以留空,或统一给一个中间值。
Sitemap 与入口页内链的分工
两者并不冲突,但不要互相依赖。内链决定蜘蛛在站内的爬行路径和深度,Sitemap 决定它知道哪些 URL 存在。如果入口页全部靠 Sitemap 被发现、站内没有任何互链,那么一旦 Sitemap 解析失败或抓取频率下降,整批入口页就断了来源。
常见的失效原因
- URL 返回 404、410 或持续性 5xx,长期存在会拉低整份文件的信任度。
- URL 被 robots.txt 屏蔽,或页面本身带了 noindex。
- URL 经过重定向,最终地址与 Sitemap 中写的不一致。
- 文件编码错误或 XML 格式不合法,导致直接解析失败。
- 返回的 Content-Type 不是 XML,或需要登录才能访问。
- 文件体积超限被截断,后面的条目全部丢失。
- HTTPS 证书链异常,抓取工具取不到文件。
排查顺序建议:先手动访问 Sitemap 地址,确认能正常打开;再看格式与编码;最后抽查其中若干 URL 的返回码和可抓取性。
更新频率怎么定
入口页批量上线时,可以在当天更新一次 Sitemap;进入日常维护阶段后,按实际变化更新即可,不必每天重写。频繁刷时间戳却没有实质内容改动,属于典型的噪声信号,对抓取节奏没有正面帮助。
几点实操建议
- 给 Sitemap 加监控:定时请求,记录状态码和条目数变化。
- 入口页下线时,同步从 Sitemap 中移除,避免长期挂着失效地址。
- 新批次入口页单独建子 Sitemap,观察一段时间再决定是否合并。
- 不要指望 Sitemap 解决收录问题,它只影响“是否被发现”这一环。