chartbastan/_bmad-output/implementation-artifacts/2-3-implémenter-le-scraper-rss.md
2026-02-01 09:31:38 +01:00

4.5 KiB

Story 2.3: Implémenter le scraper RSS

Status: review

Story

As a développeur, I want implémenter un scraper RSS, So que je peux collecter des articles de sources RSS sur les matchs.

Acceptance Criteria

Given des URLs RSS sont configurées (sources sportives) When le scraper RSS est exécuté Then il parse les flux RSS et extrait les articles pertinents And il extrait le titre, contenu, date de publication And les données sont stockées avec format cohérent

Given une source RSS est indisponible When le scraper tente de la lire Then l'erreur est loggée And le scraper continue avec les autres sources RSS

Tasks / Subtasks

  • Installer les dépendances RSS (AC: #1)

    • Installer feedparser pour parsing RSS
    • Configurer les URLs RSS sources sportives
    • Créer le module scraper RSS
    • Configurer les sources RSS (ESPN, BBC Sport, etc.)
    • Vérifier l'accès aux flux RSS
  • Implémenter le parser RSS (AC: #1)

    • Créer la fonction de parsing de flux RSS
    • Extraire les données: titre, contenu, date
    • Filtrer les articles pertinents (football)
    • Stocker les articles dans la base de données
    • Gérer les erreurs de parsing
  • Créer les schémas de base de données pour articles RSS (AC: #1)

    • Créer la table articles_rss dans SQLite
    • Définir les colonnes: id, title, content, published_at
    • Ajouter les colonnes pour source_url et match_id
    • Créer les indexes appropriés
    • Générer et appliquer les migrations
  • Implémenter la gestion d'erreurs robuste (AC: #2)

    • Logger toutes les erreurs sans arrêter le processus
    • Continuer avec les autres sources RSS
    • Configurer les timeouts appropriés
    • Tester la gestion d'erreurs
  • Tester le scraper RSS (AC: #1, #2)

    • Tester le parsing de flux RSS
    • Vérifier que les articles sont stockés correctement
    • Tester la gestion d'erreurs
    • Valider le format cohérent avec Twitter/Reddit

Dev Notes

Architecture Patterns et Contraintes

Stack Technique Imposé:

  • RSS Parser: feedparser
  • Database: SQLite avec Drizzle (Next.js) et SQLAlchemy (FastAPI)
  • Sources: ESPN, BBC Sport, Goal.com, etc.
  • Pondération: RSS 15% (Twitter 60%, Reddit 25%)

Technical Requirements

Configuration RSS:

import feedparser

# Sources RSS
RSS_SOURCES = [
    "http://www.espn.com/espn/rss/news",
    "http://feeds.bbci.co.uk/sport/football/rss.xml",
    "https://www.goal.com/rss"
]

def parse_rss_feed(url: str):
    feed = feedparser.parse(url)
    return feed.entries

File Structure

backend/
├── app/
│   ├── scrapers/
│   │   └── rss_scraper.py
│   ├── models/
│   │   └── rss_article.py
│   └── schemas/
│       └── rss_article.py

References

  • [Source: _bmad-output/planning-artifacts/epics.md#Story-2.3]

Dev Agent Record

Agent Model Used

GLM-4.7

Completion Notes List

  • Scraper RSS implémenté avec succès
  • Articles collectés et stockés
  • Gestion d'erreurs robuste fonctionnelle

2026-01-17: Implémentation complète du scraper RSS:

  • Création du modèle de base de données RSSArticle avec indexes appropriés
  • Création des schémas Pydantic pour validation
  • Implémentation du module RSSScraper avec parsing de flux RSS
  • Filtrage automatique des articles pertinents (mots-clés football)
  • Gestion d'erreurs robuste: continue avec les autres sources en cas d'erreur
  • Configuration par défaut avec 4 sources sportives (ESPN, BBC Sport, Goal.com, Sky Sports)
  • Timeout configurable (30 secondes par défaut)
  • Migration Alembic créée pour la table rss_articles
  • Tests unitaires complets créés avec mocks
  • Format cohérent avec les scrapers Twitter et Reddit

File List

  • backend/app/scrapers/rss_scraper.py (nouveau)
  • backend/app/models/rss_article.py (nouveau)
  • backend/app/schemas/rss_article.py (nouveau)
  • backend/app/models/__init__.py (modifié)
  • backend/app/schemas/__init__.py (modifié)
  • backend/alembic/versions/20260117_0007_create_rss_articles_table.py (nouveau)
  • backend/tests/test_rss_scraper.py (nouveau)

Change Log

2026-01-17

  • Implémentation du scraper RSS complet avec feedparser
  • Création de la table rss_articles dans SQLite
  • Implémentation de la gestion d'erreurs robuste
  • Création de la migration Alembic 20260117_0007_create_rss_articles_table
  • Ajout des tests unitaires pour le scraper RSS