Lecteur de flux RSS / Atom
Utilisez cette compétence lorsqu'un script doit lire un flux et que vous souhaitez une forme normalisée commune à RSS 2.0 et Atom, sans dépendance tierce. Elle effectue un seul passage avec ElementTree et extrait title, link, id, published et summary des deux formats, de sorte que le code aval (dédoublonnage, résumé, alerte) n'ait jamais à se brancher sur le type de flux.
Quand l'invoquer
- L'utilisateur dit : « lis ce flux RSS », « consulte un flux de blog », « récupère les dernières entrées d'un flux Atom », « surveille un site pour de nouveaux articles ».
- Le code a déjà récupéré les octets d'un flux et a besoin d'entrées structurées.
Quand NE PAS l'invoquer
- La source propose une vraie API JSON – appelez-la plutôt que de gratter un flux.
- Vous avez besoin de la gestion complète des cas particuliers de feedparser (tous les dialectes malformés) – installez
feedparser.
Exemple concret
Entrée utilisateur :
Lis https://example.com/feed.xml et affiche le titre et le lien de chaque article.
Sortie :
# Copiez assets/feed.py dans votre projet, puis :
from urllib.request import urlopen
from feed import parse_feed
with urlopen("https://example.com/feed.xml", timeout=20) as r:
for item in parse_feed(r.read()):
print(item["title"], "->", item["link"])
Chaque élément est un dictionnaire avec les mêmes clés, que le flux soit RSS ou Atom. Ainsi, le dédoublonnage par id et le tri par published fonctionnent sans cas particulier.
Modèle à appliquer
- Analyser une fois avec
xml.etree.ElementTree; itérer suritem(RSS) et{atom}entry(Atom). - Normaliser vers un ensemble de clés stables, de sorte que le reste du pipeline soit indépendant du format de flux.
- Replier de
guid/idAtom vers le lien, afin que chaque élément ait une identité stable pour le dédoublonnage. - Laisser le réseau en dehors du parseur : passer des octets/texte pour qu'il reste pur et testable.
Référence : assets/feed.py.
Source
Distillé des projets d'agrégation de nouvelles de l'auteur. v1.0.0. Voir aussi : [[gmail-imap-digest]], [[sqlite-state]], [[pipeline-orchestrator]].
→ Construisez le bot exécutable complet avec Trawlkit.