sitemap
XML-Sitemaps von Websites mit automatischer Erkennung über robots.txt parsen
Maintainer: onnimonni
Installation und Laden
INSTALL sitemap FROM community;LOAD sitemap;Beispiel
-- Get all URLs from a sitemap (auto-prepends https://)SELECT * FROM sitemap_urls('example.com');
-- Direct sitemap URL (skips discovery)SELECT * FROM sitemap_urls('https://example.com/sitemap.xml');
-- Get URLs from multiple sitesSELECT * FROM sitemap_urls(['example.com', 'google.com']);
-- Filter specific URLsSELECT * FROM sitemap_urls('example.com')WHERE url LIKE '%/blog/%';
-- Bruteforce find sitemap (tries 587+ patterns)SELECT bruteforce_find_sitemap('example.com') as sitemap_url;
-- Ignore errors for invalid domainsSELECT * FROM sitemap_urls(['valid.com', 'invalid.com'], ignore_errors := true);
-- Set custom user agentSET sitemap_user_agent = 'MyBot/1.0';
-- Count URLs by typeSELECT CASE WHEN url LIKE '%/product/%' THEN 'product' WHEN url LIKE '%/blog/%' THEN 'blog' ELSE 'other' END as type, count(*) as countFROM sitemap_urls('https://example.com')GROUP BY type;Über sitemap
Die Erweiterung sitemap stellt eine Tabellenfunktion zum Parsen von XML-Sitemaps von Websites bereit. Sie erkennt Sitemaps automatisch über mehrere Fallback-Methoden und unterstützt das rekursive Durchlaufen von Sitemap-Indizes.
Funktionen:
- Sitemap-Erkennung mit mehreren Fallbacks (robots.txt, /sitemap.xml, /sitemap_index.xml, HTML-Meta-Tags)
- Sitzungs-Caching für gefundene Sitemap-Orte
- Bruteforce-Finder (bruteforce_find_sitemap) – versucht über 587 gängige Sitemap-URL-Muster
- Benutzerdefinierter User-Agent über SET sitemap_user_agent
- Direkte Sitemap-URLs (überspringt die Erkennung)
- Sitemap-Index-Unterstützung (verschachtelte Sitemaps)
- Array-Unterstützung zur Verarbeitung mehrerer Domains
- Wiederholungslogik mit exponentiellem Backoff
- Beachtet den Retry-After-Header bei 429-Antworten
- Gzip-Dekompression für .xml.gz-Dateien
- Unterstützung mehrerer Namensräume (Standard + Google-Schemas)
- SQL-Filterung mit WHERE-Klauseln
- Optionales Ignorieren von Fehlern bei Stapelverarbeitung
Die Funktion gibt eine Tabelle mit folgenden Spalten zurück:
- url: Seiten-URL (VARCHAR)
- lastmod: Datum der letzten Änderung (VARCHAR, optional)
- changefreq: Hinweis zur Änderungshäufigkeit (VARCHAR, optional)
- priority: Prioritätshinweis 0.0–1.0 (VARCHAR, optional)
Optionen:
- follow_robots (BOOLEAN): Zuerst robots.txt parsen (Standard: true)
- max_depth (INTEGER): Maximale Verschachtelung des Sitemap-Index (Standard: 3)
- max_retries (INTEGER): Maximale Wiederholungsversuche (Standard: 5)
- backoff_ms (INTEGER): Anfängliches Backoff in ms (Standard: 100)
- max_backoff_ms (INTEGER): Obergrenze für Backoff in ms (Standard: 30000)
- ignore_errors (BOOLEAN): Bei fehlgeschlagenen Abrufen keinen Fehler werfen (Standard: false)
Beispiel mit Optionen:
SELECT * FROM sitemap_urls( 'https://example.com', follow_robots := true, max_depth := 5, max_retries := 10) WHERE url LIKE '%/product/%';Bruteforce-Sitemap-Erkennung (Skalarfunktion):
-- Find sitemap by trying 587+ common patternsSELECT bruteforce_find_sitemap('https://example.com') as sitemap_url;-- Returns first working sitemap URL or NULL
-- Patterns tested include:-- /sitemap.xml, /sitemap_index.xml-- /sitemap/sitemap.xml, /sitemaps/sitemap-index.xml-- /en/sitemap.xml, /de/sitemap.xml-- /pub/media/sitemap.xml-- And 580+ more variationsKombinieren Sie dies mit http_request, um Seiteninhalte abzurufen:
SELECT s.url, h.bodyFROM sitemap_urls('https://example.com') sJOIN LATERAL (SELECT * FROM http_get(s.url)) h ON trueWHERE s.url LIKE '%/product/%'LIMIT 10;Hinzugefügte Funktionen
Diese Erweiterung fügt keine Funktionen hinzu.
Überladene Funktionen
Diese Erweiterung fügt keine Funktionsüberladungen hinzu.
Hinzugefügte Typen
Diese Erweiterung fügt keine Typen hinzu.
Hinzugefügte Einstellungen
Diese Erweiterung fügt keine Einstellungen hinzu.