✨ 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
This commit is contained in:
102
docs/NOUVEAU_SCRAPER.md
Normal file
102
docs/NOUVEAU_SCRAPER.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user