搜尋抓取

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 只是入口线索,不能替代内鏈结构,也不意味着提交後一定被抓取或收錄。用抓取日誌驗證實际請求,比盯提交狀態更有意义。

小结

先保證索引文件被正确讀取,再逐個確認子地图可訪問、路径一致、编碼正确,最後用抓取日誌對照實际請求。三步做完,多數提交了但没被抓的入口缺口,都能定位到具体位置。