- 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
3.6 KiB
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=2026fixe 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_recuperepour 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 coursedate: Date de la course (format affiché par le site)lieu: Lieu de la coursediscipline: Disciplinetype: Type de compétitionniveau: Niveau (Départemental, Régional, etc.)label: Labellien: URL principale de la coursefiche_detail: URL vers la fiche détailléeresultats_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ésultatscourse_nom: Nom de la coursecourse_date: Date de la coursecourse_lieu: Lieu de la coursecourse_url: URL de la page des résultatsplace: Place obtenueresultat: Résultat (temps/points)nom: Nom de l'athlèteprenom: Prénom de l'athlèteclub: Club de l'athlètedept: Départementligue: Liguecategorie: Catégorieniveau: Niveaupoints: Pointstemps: 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
- Robustesse: Scraping jour par jour évite les problèmes de pagination
- Transparence: La colonne
jour_recuperepermet de savoir exactement ce qui a été récupéré - Reprise facile: On peut relancer à n'importe quel moment
- Progressive sauvegarde: Les données sont sauvegardées au fur et à mesure
- 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.