Sitemap URL Extractor(網址地圖網址擷取器)會將整份 XML 網址地圖或網址地圖索引貼到瀏覽器編輯器中,從每個 url 或 sitemap 項目中擷取直接的 loc 值,並回傳一份每行一個網址且已去除重複的清單,讓您可以直接複製到剪貼簿——無需上傳、無需 API 金鑰,也無需命令列。每次執行都是確定性的:相同的 XML 文字一定會產生相同的輸出,且解析器不是完整接受該文件,就是讓整次執行失敗。這個小工具圍繞著 Sitemaps 通訊協定 所定義的兩種結構打造,因此速查表的使用者不需要記住第三方 API 的介面或函式庫的怪癖——以下規則才是唯一需要掌握的。
當您在另一個分頁或文字檔中開啟了一份網址地圖,並想要一份扁平化的網址清單來餵入試算表、重新導向稽核、移轉審查、爬蟲檢查清單或日誌比對時,請使用這份速查表。如果您只需要確認少數幾個位置,直接掃讀原始 XML 即可。如果您需要一份乾淨、可比較的清單,Sitemap URL Extractor 是能在本機端完成工作的最快途徑。

本速查表的用途
本表依序記錄五項重點:工具所接受的兩種根元素類型、執行取的精確步驟、決定解析器是否會成功的輸入規則、會讓整次執行失敗而非截斷的限制,以及輸出無法取代的即時網站檢查項目。如果您已貼上 XML 並想知道執行為何失敗,請直接跳到規則表格。如果您手上已有清單並想了解每個欄位的意義,請跳到輸出表格。在您把這份清單當作稽核證據之前,請先閱讀「擷取無法證明的事項」一節。
由於貼上的 XML 每個位元組都保留在裝置上,因此同一份表也能安全地用於私密的預備環境網址地圖、上線前的網址清單以及內部探索檔案。機密性是契約的一部分:擷取器執行期間不會透過網路傳送任何資料,而複製結果是您自行掌控的手動操作。
如何從網址地圖取網址
在瀏覽器中開啟 Sitemap URL Extractor,並依照下列四個步驟操作。每個步驟對應一個明確的動作;請勿略過重複檢查,因為您在第三步看到的數量是工具唯一會給您的訊號,用以確認標準化是否符合預期。
- 在另一個分頁或文字編輯器中開啟一份 urlset 或 sitemapindex 文件的 XML 來源。請確認您複製的是原始 XML,而非其經過算繪的 HTML 預覽,並請勿貼上遠端網址——這個小工具不會擷取任何東西。
- 將完整的 XML 文字貼入編輯器。如果來源是壓縮的 .gz 檔案,請先在檔案管理員中解壓縮,讓編輯器看到純 XML。
- 執行擷取。檢視工具回報的四個數值:它找到的根元素類型(urlset 或 sitemapindex)、接受的獨立網址數量、被移除的標準化重複項目數量,以及完整的輸出清單。
- 將每行一個網址的清單複製到剪貼簿。可用於爬蟲檢查清單、試算表匯入、重新導向稽核輸入、日誌比對目標,或移轉審查基準。針對這份清單本身無法單獨證明的項目,請另外執行即時狀態、標準網址、robots 及索引狀態的檢查。
如果您需要更詳細的逐步說明並附上可複製貼上的 XML 範例,無需 API 從網址地圖取網址 一文以更敘述性的方式涵蓋了相同的工作流程。
解析器強制執行的輸入規則
解析器的接受範圍刻意設計得很窄。它會去除位元組順序標記、XML 宣告及註解,然後尋找兩種類型之一的單一根元素。任何超出這個小文法規則的內容都會導致執行失敗,而非被悄悄修補。下表摘要列出已公開的規則;如果您的輸入不符合其中任何一列,擷取器將會拒絕該文件,並告訴您是哪一個編號的 loc 或項目出錯。
| 規則範圍 | 接受 | 拒絕 |
|---|---|---|
| 根元素 | urlset 或 sitemapindex | 任何其他元素名稱、缺少根元素、多個根元素 |
| 項目元素 | urlset 內的 url、sitemapindex 內的 sitemap | 空項目、缺少直接 loc 子元素的項目 |
| 命名空間前置詞 | 預設命名空間,或一個一致的前置詞(例如 sm:urlset、sm:url、sm:loc) | 同一份文件中混用前置詞與預設形式 |
| 實體與參照 | 五個預先定義的 XML 實體;有效的十進位與十六進位數字字元參照 | 自訂實體宣告、DTD 宣告、未知的具名實體、loc 內部的巢狀標記 |
| url 或 sitemap 的其他子元素 | 選用值(例如 lastmod)會被忽略 | 用來代替缺少頁面 loc 的 image:loc、news:loc 或其他擴充位置 |
| 結構修復 | 無——解析器不會猜測結尾標籤應該放在哪裡 | 格式錯誤的 XML、不完整的項目、不完整的根元素 |
「不修復」這條規則對速查表使用者很重要。如果您的正式環境 XML 是由會產生不一致前置詞的樣板系統所產生,請修正產生器而非網址地圖。如果第三方外掛會為了實體定義而輸出 DTD,請在貼上之前先移除 DTD——小工具會拒絕它,因為允許 DTD 會讓實體展開成為產品中隱藏的一部分。
輸出:工具回傳的內容
成功執行後,擷取器會顯示根元素類型、獨立計數、重複計數,以及完整的每行一個網址清單。該清單保留首次出現的順序,因此您可以直接與先前的匯出進行差異比對而無需重新排序,而複製按鈕會將整份接受的清單放到剪貼簿上。下表顯示每項輸出的用途以及它不包含的內容。
| 輸出欄位 | 它告訴您的事 | 它無法告訴您的事 |
|---|---|---|
| 根元素類型 | 您貼上的是頁面網址的 urlset,還是網址地圖檔案網址的 sitemapindex | 來源是否為搜尋引擎實際爬取的即時檔案 |
| 獨立計數 | 從輸入中接受了多少個不同的序列化網址 | 網站整體有多少頁面,或其中有多少頁面已被索引 |
| 重複計數 | 有多少項目摺疊為文件中先前已出現的網址 | 重複項目是否反映真實的內容重複,或僅僅是主機大小寫或預設通訊埠變體 |
| 完整輸出 | 已去除重複並依瀏覽器標準化、保留首次出現順序、可直接複製的清單 | 每個網址是否可被爬取、是否為標準網址、是否被索引或排名 |
標準化作業是保守的,並由 WHATWG URL Standard 驅動:主機名稱會轉為小寫、預設通訊埠會被移除,並在必要時將非 ASCII 路徑字元進行百分比編碼。憑證、片段、原始空白字元、格式錯誤的百分比跳脫、反斜線、相對路徑,以及 http 或 https 以外的任何配置都會被拒絕。如果您的清單中出現預期之外的重複項目,這通常是主機大小寫變體(Example.com 與 example.com)或預設通訊埠變體(https://example.com:443/ 與 https://example.com/)的徵兆——兩者會摺疊為相同的序列化值,且僅保留第一個出現的項目。
會導致整次執行失敗的限制
存在兩項硬性上限,越過其中任何一項都會讓整次執行失敗,且不會產生部分輸出。通訊協定層級的 loc 上限是每個網址 2,048 字元,這符合 Sitemaps 規格。小工具層級的上限是 50,000 個獨立網址以及 5,000,000 個 UTF-16 輸入碼元。一個具體的檢查範例:序列化後長度正好為 2,047 字元的 loc 會通過單一網址長度規則,而序列化後長度正好為 2,049 字元的 loc 則會被拒絕,且執行會在該項目上失敗。如果正式環境的網址地圖接近這些上限,請驗證未壓縮的位元組大小,並考慮將其拆分為較小的檔案,再透過網址地圖索引加以引用。
網址地圖索引是網址地圖檔案的目錄,而非迴的套件。擷取器會回傳索引內部的直接 loc 值,而非每個被引用子檔案的頁面網址。如果您需要索引中所有頁面的完整清單,請取得每個子檔案並分別透過擷取器處理。壓縮的 .gz 資料必須在工具外部解壓縮;不支援貼上遠端網址,因為小工具不會發出任何網路請求。
擷取無法證明的事項
輸出中的網址僅能確認該位置曾出現在所貼上的 XML 中,並通過已公開的驗證。它並不能確認可爬取性、標準網址的選定、robots 權限、索引狀態、排名、頁面品質,或搜尋引擎是否接受該網址地圖。Sitemaps 通訊協定本身就將網址地圖視為探索提示,而同一份文件可以列出會回傳 404、重新導向、被 robots.txt 封鎖、帶有 noindex 中繼標記,或在檔案產生後數小時即從即時網站移除的網址。
請將這份清單視為大型稽核中的證據,而非裁決。請將其與資料庫中的標準網址、新鮮的爬取結果、分析工具的登陸頁面以及網址地圖先前的版本進行比對。差異之處才是稽核的訊號,而非擷取出的清單本身。
複製清單之後
手上有了乾淨的網址清單之後,下一步取決於您最初的問題。針對重新導向稽核,請將清單與您的重新導向對應表進行合併,並標記出指向不同標準網址目的地的項目。針對移轉審查,請將清單與先前的版本進行差異比對,並調查只出現在其中一方的任何網址。針對爬蟲檢查清單,請將清單貼入您的爬蟲作為起始集合,讓它從中探索連結。針對日誌比對,請在比對之前透過相同的瀏覽器標準規則對日誌中的網址進行標準化。
由於這個小工具完全在用戶端執行,清單在您將其複製到別處之前都會保留在裝置上。私密的預備環境位置、上線前的網址清單以及尚未發布的區段,除非您自行將其移出,否則都會保持機密——解析器不會回傳任何資訊、記錄輸入內容或儲存結果。
如果您正在權衡各種選項,Sitemap Generator 命令列與線上工具:如何抉擇 一文對此有詳細說明。