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

103 lines
3.6 KiB
Markdown

# 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)
```bash
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:
```bash
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`:
```python
# 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.