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 解决收錄問题,它只影响“是否被發現”這一环。