搜尋抓取

Sitemap 提交後蜘蛛没来:按這份清單逐項排查

Sitemap 是蜘蛛發現 URL 的常用入口,但提交不等于抓取。本文從文件可訪問性、URL 质量、lastmod 更新信号、日誌核對、内鏈配合和服務器响應几個环节,给出一份可逐項执行的排查清單,帮助定位問题所在,而不是反复重新提交。

搜尋抓取

Sitemap 提交後蜘蛛没来:按這份清單逐項排查

Sitemap 常被当成把 URL 交给蜘蛛的快捷方式,但提交之後没有抓取,原因往往不在提交這個動作本身。蜘蛛是否来、什么时候来,取决于文件能不能讀、里面的 URL 值不值得抓,以及站内路径和服務器狀態是否配合。下面是一份可以逐項核對的清單。

先確認 Sitemap 文件能被正常讀取

第一步不是看蜘蛛,而是看 Sitemap 本身。用一個未登入的浏览器或無缓存环境訪問 Sitemap 地址,確認返回 200,而不是 301 鏈太長、403 或 5xx。Content-Type 通常是 application/xml 或 text/xml,如果被服務器返回成 text/html,蜘蛛可能會把它当成普通頁面處理。

XML 格式错誤也會導致整份文件被跳過。检查标簽是否閉合、URL 是否做了轉义、是否包含非法字符。如果 Sitemap 很大,還要確認分片文件都能單獨訪問,並且索引文件里的地址指向正确。

看 Sitemap 里的 URL 是否值得進入抓取队列

蜘蛛讀完 Sitemap 後,並不會立刻抓取全部 URL。它會结合頁面狀態、重复度和站内重要性做篩選。以下几種情况容易让 URL 停在队列外:

  • URL 返回 404、410 或软 404,蜘蛛抓一次後就會降低信任。
  • 頁面被 robots.txt 屏蔽,Sitemap 里却仍然保留。
  • 頁面 canonical 指向別的 URL,或本身是重复内容。
  • URL 带大量參數,且參數组合没有收敛,蜘蛛會認為可抓版本太多。
  • 頁面需要登入或必须提交表單才能看到内容。

把這些 URL 留在 Sitemap 里,不會增加抓取,反而會让蜘蛛對整份清單的准确性打折扣。定期清理無效地址,比堆更多 URL 更有用。

lastmod 要真實,不要每篇都改

很多站点會在每次生成 Sitemap 时把全部 URL 的 lastmod 更新為目前時間。短期看像是“告诉蜘蛛我更新了”,長期看會让 lastmod 失去參考價值。蜘蛛更關注的是内容是否真的發生了變化。如果只是模板或邊栏改動,没有必要改 lastmod。

相對稳妥的做法是:只有正文、标题、關键信息确實更新时才調整對應 URL 的 lastmod;批量更新时也尽量分批,不要一天内全站同时變動。

從訪問日誌核對蜘蛛是否真的讀取過 Sitemap

不要凭感觉判断。到服務器訪問日誌里搜尋 Sitemap 文件的請求记錄,看蜘蛛有没有来、返回狀態是多少、频率如何。如果 Sitemap 被频繁讀取,但里面的 URL 没有後續抓取,問题更可能在 URL 篩選或站内路径上。

日誌里能看到“来過”,但看不到“為什么没繼續抓”。所以要把 Sitemap 讀取记錄和具体 URL 的抓取记錄分開看。

内鏈與抓取入口是否配合

Sitemap 提供的是 URL 清單,不是抓取路径。蜘蛛仍然會從首頁、栏目頁、列表頁、相關推荐等位置發現連結。如果一個 URL 只出現在 Sitemap 里,站内没有任何入口指向它,蜘蛛對它的重要性判断會偏低。重要頁面至少要有稳定的内鏈入口,並且連結是普通的 a href,而不是依赖点击事件或 JavaScript 後才生成。

服務器响應與抓取节奏

如果服務器响應時間经常超過几秒,或者間歇性返回 5xx,蜘蛛會主動降低抓取频率。這種情况下,Sitemap 寫得再完整,抓取速度也會被压制。先解决稳定性和响應速度,再谈 Sitemap 的覆盖量。

一個可执行的排查顺序

  1. 直接訪問 Sitemap,確認狀態碼、類型和 XML 格式。
  2. 抽查若干 URL,確認返回 200、可索引、不是重复頁面。
  3. 检查 lastmod 是否真實,避免全站同时變動。
  4. 在日誌中確認蜘蛛讀取 Sitemap 的记錄和狀態。
  5. 检查這些 URL 是否有站内入口,連結是否可被直接抓取。
  6. 观察服務器响應時間和错誤率,排除稳定性問题。
  7. 保持一段時間不要反复改 Sitemap,给蜘蛛一個稳定的观察窗口。

Sitemap 更像是给蜘蛛的一份线索清單,不是收錄保證。把文件本身、URL 质量、更新信号、日誌核對和内鏈路径都检查一遍,比反复重新提交更容易找到真正卡住的位置。