Files
ffa-calendar/docs/NOUVEAU_SCRAPER.md
Muyue 0bd65b1d3f Feature: Add new daily scraper approach for FFA data
- New scraper_jour_par_jour.py: Day-by-day scraping approach
  * Fixes 403/404 errors from previous method
  * Uses frmsaisonffa= (empty) parameter to avoid season filtering
  * Scrapes courses and results for each day from 01/01/2024 to 01/08/2026
  * Progressive CSV saving with 'jour_recupere' column for traceability

- New scraper_jour_par_jour_cli.py: CLI version with customizable dates
  * --start-date: Custom start date (default: 2024-01-01)
  * --end-date: Custom end date (default: 2026-08-01)
  * --no-results: Skip result fetching for faster scraping
  * --output-dir: Custom output directory

- Documentation in docs/NOUVEAU_SCRAPER.md
  * Explains problems with old approach
  * Details new day-by-day methodology
  * Usage instructions and examples

- Cleaned up: Removed temporary test scripts and debug files
2026-01-02 11:54:56 +01:00

3.6 KiB

Nouveau Scraper FFA - Approche Jour par Jour

Ce script remplace l'ancienne méthode de scraping qui avait des problèmes d'erreurs 403/404.

Ce qui a changé

Problèmes de l'ancienne approche

  • Utilisait des périodes de 15 jours
  • Paramètre frmsaisonffa=2026 fixe qui causait des erreurs
  • Erreurs 403/404 fréquentes
  • Difficile de relancer sur une date spécifique

Nouvelle approche

  • Scraping jour par jour (plus robuste)
  • Utilise frmsaisonffa= (vide) pour éviter les filtres par saison
  • Récupère les courses et leurs résultats pour chaque jour
  • Sauvegarde progressive dans des CSV
  • Colonne jour_recupere pour savoir quel jour on a scrapé
  • Facile de relancer à partir d'une date spécifique

Fichiers générés

data/courses_daily.csv

Contient toutes les courses récupérées avec les colonnes:

  • jour_recupere: Date pour laquelle on a récupéré la course (format YYYY-MM-DD)
  • nom: Nom de la course
  • date: Date de la course (format affiché par le site)
  • lieu: Lieu de la course
  • discipline: Discipline
  • type: Type de compétition
  • niveau: Niveau (Départemental, Régional, etc.)
  • label: Label
  • lien: URL principale de la course
  • fiche_detail: URL vers la fiche détaillée
  • resultats_url: URL vers la page des résultats

data/results_daily.csv

Contient tous les résultats des courses avec les colonnes:

  • jour_recupere: Date pour laquelle on a récupéré les résultats
  • course_nom: Nom de la course
  • course_date: Date de la course
  • course_lieu: Lieu de la course
  • course_url: URL de la page des résultats
  • place: Place obtenue
  • resultat: Résultat (temps/points)
  • nom: Nom de l'athlète
  • prenom: Prénom de l'athlète
  • club: Club de l'athlète
  • dept: Département
  • ligue: Ligue
  • categorie: Catégorie
  • niveau: Niveau
  • points: Points
  • temps: Temps réalisé

Utilisation

Scraping complet (du 01/01/2024 au 01/08/2026)

python scripts/scraper_jour_par_jour.py

Estimation du temps

  • Environ 5-6 secondes par jour (avec récupération des résultats)
  • 944 jours à scraper = ~1.3 à 1.5 heures

Reprise après interruption

Si le script est interrompu, il continue d'ajouter aux fichiers CSV existants. Pour recommencer à zéro, supprimez les fichiers:

rm data/courses_daily.csv data/results_daily.csv

Logs

Le script génère des logs dans scraper_jour_par_jour.log et affiche la progression en temps réel.

Modifications pour tests

Si vous voulez tester sur une période plus courte, modifiez les dates dans scripts/scraper_jour_par_jour.py:

# Ligne 276-277 dans la fonction main()
start_date = "2024-01-01"  # Modifier ici
end_date = "2024-01-31"    # Modifier ici

Avantages de cette approche

  1. Robustesse: Scraping jour par jour évite les problèmes de pagination
  2. Transparence: La colonne jour_recupere permet de savoir exactement ce qui a été récupéré
  3. Reprise facile: On peut relancer à n'importe quel moment
  4. Progressive sauvegarde: Les données sont sauvegardées au fur et à mesure
  5. Pas de duplication: Les courses sont clairement identifiées par leur jour de récupération

URL utilisée

Le script utilise cette URL pour chaque jour:

https://www.athle.fr/bases/liste.aspx?frmpostback=true&frmbase=calendrier&frmmode=1&frmespace=0&frmsaisonffa=&frmdate1=YYYY-MM-DD&frmdate2=YYYY-MM-DD&frmtype1=&frmniveau=&frmligue=&frmdepartement=&frmniveaulab=&frmepreuve=&frmtype2=&frmtype3=&frmtype4=

Le paramètre clé est frmsaisonffa= (vide) qui permet de récupérer les résultats sans filtrer par saison.