Algroveon-Parser – RSS- und Atom-Parser ohne externe Abhängigkeiten
Schlanker Feed-Parser in reinem Python für RSS 2.0, RSS 0.91 und Atom 1.0.
Diese Python-Library ist für das Parsen von RSS- und Atom-Feeds gedacht und setzt dabei bewusst nur auf die Python-Standardbibliothek. Sie verarbeitet rohe Feed-Daten ohne externe Abhängigkeiten und entstand als direkter Ersatz für eine externe Parser-Lösung, weil ich sehen wollte, wie viel ich alleine schaffe, und zugleich möglichst wenig externe Abhängigkeiten haben wollte.
Was der Parser leistet
- Formate: RSS 2.0, RSS 0.91, Atom 1.0, RDF-basierte RSS-1.0-Feeds
- Ergebnis: typisierte
Feed- undEntry-Dataclasses, direkt verwendbar - HTML-Sanitizer: Allowlist-basiert, XSS-sicher, produziert bereinigtes HTML und Plain Text
- Bildextraktion:
media:thumbnail→media:content→ erstes<img>aus Content → Summary - Datumsnormalisierung: RFC 2822 und ISO 8601, immer timezone-aware
- Encoding-Fallback: toleriert Feeds, die falsches Encoding deklarieren
Module
| Modul | Aufgabe |
|---|---|
parser.py |
Format-Erkennung, Dispatcher, Encoding-Fallback |
rss2.py |
RSS 2.0 / 0.91 Parser inkl. content:encoded, dc:creator, media:* |
atom.py |
Atom 1.0 Parser inkl. <link rel="alternate"> |
sanitize.py |
HTML-Sanitizer + Plain-Text-Extraktion |
images.py |
Bild-URL-Extraktion aus XML-Elementen und HTML-Inhalten |
date.py |
RFC-2822- und ISO-8601-Datumsnormalisierung |
models.py |
Feed und Entry Dataclasses |
Namespaces und Realwelt-Feeds
Entwickelt und getestet gegen 16 echte Feeds (Stand März 2026): Tagesschau, Spiegel,
Süddeutsche, Zeit, Heise, The Verge, Handelsblatt, WiWo, Postillon und weitere.
Unterstützte Namespaces: content:encoded, dc:creator, dc:date, media:thumbnail,
media:content. Der Umfang wird noch deutlich erweitert, ist aber schon jetzt ein gutes
Training, damit der Parser langfristig möglichst universell mit verschiedenen
Technologien und Feed-Varianten arbeiten kann.
Kein HTTP-Client enthalten – absichtlich. Der Parser nimmt rohe Bytes entgegen und bleibt dadurch unabhängig vom Transport.
Läuft eingebettet in der Algroveon-News-Infrastruktur. Packaging als eigenständiges, sauber verteilbares Modul noch nicht abgeschlossen.