搜尋抓取

搜尋蜘蛛URL發現:Sitemap 與内鏈入口差集的交叉核對

Sitemap 與内鏈是搜尋蜘蛛發現 URL 的两條主要路径,两者長期不一致會让入口判断失真。本文给出可操作的三份資料来源、四類差集解讀與核對流程,說明如何区分待修复的入口缺口與可忽略的歷史噪音,並提醒归一化、日誌完整性等常见誤判点。

搜尋抓取

搜尋蜘蛛URL發現:Sitemap 與内鏈入口差集的交叉核對

為什么要做两套入口的交叉核對

Sitemap 和内鏈是搜尋蜘蛛發現 URL 的两條主要路径。前者是站点主動声明的清單,後者是蜘蛛顺着連結爬出来的實际路径。日常运营中常见的情况是:Sitemap 里的 URL 早就随改版删掉了,内鏈里却還有一批頁面從未進入過 Sitemap,两邊各说各话。只看其中一份資料,很容易得出“入口很全”或“抓取很少”的错誤结论。

交叉核對的目的是找出几份清單之間的差集,判断每個差集属于正常現象,還是需要處理的入口問题。

三份資料從哪来

  • Sitemap 清單:线上 Sitemap 文件(含索引文件展開後的全部 URL)去重後的集合。
  • 内鏈可達集:從首頁出發、按站内連結逐层抓取,得到的返回 200 的 URL 集合。多數站内爬虫工具都能導出。
  • 實际抓取集:服務器訪問日誌中搜尋蜘蛛 UA 訪問過的 URL 集合。注意日誌要覆盖足够長的周期,並做好 URL 归一化,去掉片段标识與追踪參數、统一大小寫。
三份資料的時間窗口要尽量對齐。拿上個月的内鏈抓取结果去比對本周的 Sitemap,差集里會混入大量改版噪声。

四類差集的解讀

只在 Sitemap 中、内鏈不可達

這是最需要優先看的一類。可能是頁面已刪除、被 robots 拦截,或者根本没在任何頁面里出現,也就是常说的孤岛頁。如果 URL 本身還返回 200 且有内容,說明入口断了,應补内鏈;如果已经返回 404 或 410,應從 Sitemap 中移除,避免持續占用抓取配額。

只在内鏈中、不在 Sitemap 里

不一定有問题,但值得分類。分頁、标簽聚合、篩選结果這類頁面通常不需要進 Sitemap;而文章詳情、产品頁如果長期不在 Sitemap 中,可能說明生成逻辑有遗漏。

只在日誌中、两邊都没有

常见来源是外部連結、舊版 URL、參數拼接頁。重点看這類 URL 是否返回 200 且有獨立内容:有的话就是真實入口缺口;返回 404 或重定向的,属于歷史噪音,观察即可。

业務期望有、三份都没有

真正的内容缺口。多半是發布流程里漏了推送,或者頁面只通過 JavaScript 渲染出連結,静態 HTML 里看不到。

核對流程

  1. 導出 Sitemap URL 清單,展開索引並去重。
  2. 跑一次站内爬虫,導出狀態碼為 200 的可達 URL。
  3. 從服務器日誌中提取搜尋蜘蛛訪問過的 URL,按周期切片。
  4. 统一 URL 格式後做集合运算,得到四個差集。
  5. 按是否返回 200 且有獨立内容给差集打标,区分待修复與可忽略。
  6. 修复後记錄日期,在下一次核對时观察差集是否收敛。

几個容易誤判的点

  • 归一化不做干净:结尾斜杠、大小寫、URL 编碼、追踪參數會让同一個頁面被算成多個 URL,差集立刻膨胀。
  • 日誌不完整:CDN 或反向代理只保留了部分日誌,抓取集會偏小,容易誤判成没有被抓取。
  • 把 Sitemap 当补漏工具:Sitemap 只能声明入口,不能替代内鏈。孤岛頁即使出現在 Sitemap 中,後續被發現和被重新訪問的机會通常也不理想。
  • 只做一次性核對:入口問题會随改版、發布、下架反复出現,按季度或半年做定期核對更實际。

和抓取观察配合使用

差集核對解决的是入口有没有,抓取日誌與狀態碼分布解决的是抓得怎么样。两者结合,才能判断是该补入口、清入口,還是该調整服務器响應。核對结果建议同步给内容發布和前端同学,避免同样的缺口在下一次改版里重复出現。