- 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
103 lines
3.6 KiB
Markdown
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.
|