✨ Feature: Add club results extractor and course details scraper
- Add get_club_results.py: Extract all results for a club from results CSV - Fuzzy search for club names - List clubs functionality - Export results to CSV - Add scrape_course_details.py: Scrape detailed info from course pages - Extract competition ID (frmcompetition) - Extract event details (distance, category, sex) - Extract course website link - Extract location and organizer info - Update README.md with new scripts and usage examples - Update version to v1.3.0
This commit is contained in:
114
README.md
114
README.md
@@ -52,7 +52,9 @@ ffa-calendar/
|
||||
│ ├── post_process.py # Post-traitement des données
|
||||
│ ├── monitor_scraping.py # Surveillance du scraping
|
||||
│ ├── scrape_all_periods.py # Scraping par périodes
|
||||
│ └── athlete_summary.py # Résumé par athlète
|
||||
│ ├── athlete_summary.py # Résumé par athlète
|
||||
│ ├── get_club_results.py # Extraction des résultats par club
|
||||
│ └── scrape_course_details.py # Scraping des détails des courses
|
||||
├── config/ # Fichiers de configuration
|
||||
│ └── config.env # Configuration du scraper
|
||||
├── data/ # Données générées
|
||||
@@ -277,6 +279,61 @@ python scripts/list_clubs.py
|
||||
python scripts/athlete_summary.py --data-dir data --output athlete_summary.csv
|
||||
```
|
||||
|
||||
#### Extraction des résultats par club
|
||||
|
||||
**Récupérer tous les résultats d'un club:**
|
||||
```bash
|
||||
python scripts/get_club_results.py --club "Haute Saintonge Athletisme"
|
||||
```
|
||||
|
||||
**Recherche floue (contient le nom):**
|
||||
```bash
|
||||
python scripts/get_club_results.py --club "Saintonge" --fuzzy-match
|
||||
```
|
||||
|
||||
**Lister tous les clubs contenant un terme:**
|
||||
```bash
|
||||
python scripts/get_club_results.py --list-clubs --search-term "Saintonge"
|
||||
```
|
||||
|
||||
Options:
|
||||
- `--club`: Nom du club à rechercher
|
||||
- `--fuzzy-match`: Recherche floue (défaut: True)
|
||||
- `--exact-match`: Recherche exacte du nom
|
||||
- `--list-clubs`: Lister tous les clubs disponibles
|
||||
- `--search-term`: Terme de recherche pour filtrer les clubs
|
||||
- `--limit`: Limiter le nombre de clubs affichés
|
||||
- `--output-dir`: Répertoire de sortie pour les exports
|
||||
|
||||
Les résultats sont exportés dans `data/exports/` avec un fichier CSV contenant tous les résultats du club.
|
||||
|
||||
#### Scraping des détails et épreuves des courses
|
||||
|
||||
**Scraper les détails de toutes les courses:**
|
||||
```bash
|
||||
python scripts/scrape_course_details.py
|
||||
```
|
||||
|
||||
**Scraper un nombre limité de courses:**
|
||||
```bash
|
||||
python scripts/scrape_course_details.py --limit 100
|
||||
```
|
||||
|
||||
**Reprendre le scraping à partir d'un index:**
|
||||
```bash
|
||||
python scripts/scrape_course_details.py --start-from 500
|
||||
```
|
||||
|
||||
Ce script génère deux fichiers CSV:
|
||||
- `data/course_details.csv`: Détails de chaque course (ID, lieu, site web, etc.)
|
||||
- `data/course_epreuves.csv`: Épreuves de chaque course (distance, catégorie, sexe, participants)
|
||||
|
||||
Options:
|
||||
- `--courses-file`: Fichier CSV des courses (défaut: data/courses_daily.csv)
|
||||
- `--output-dir`: Répertoire de sortie (défaut: data)
|
||||
- `--limit`: Limiter le nombre de courses à scraper
|
||||
- `--start-from`: Index de départ pour reprendre le scraping
|
||||
|
||||
### Via les modules Python
|
||||
|
||||
```python
|
||||
@@ -323,6 +380,49 @@ data/
|
||||
- lien: URL vers la page de la course
|
||||
- type: Type de course (Cross, Stade, Route, etc.)
|
||||
- categorie: Catégorie de la compétition
|
||||
- resultats_url: URL vers la page des résultats
|
||||
|
||||
#### results.csv
|
||||
- place: Place obtenue
|
||||
- nom: Nom de l'athlète (en majuscules)
|
||||
- prenom: Prénom de l'athlète
|
||||
- club: Club de l'athlète
|
||||
- categorie: Catégorie de compétition
|
||||
- temps: Temps réalisé
|
||||
- course_url: URL de la course concernée
|
||||
|
||||
#### course_details.csv (généré par scrape_course_details.py)
|
||||
- course_id: ID unique de la course
|
||||
- course_url: URL de la page des résultats
|
||||
- course_nom: Nom de la course
|
||||
- course_date: Date de la course
|
||||
- course_lieu: Lieu de la course
|
||||
- course_lieu_complet: Lieu détaillé
|
||||
- course_site_web: Lien vers le site web de la course
|
||||
- competition_id: Numéro de compétition FFA (frmcompetition)
|
||||
- organisateur: Organisateur de la course
|
||||
- contact: Informations de contact
|
||||
- date_heure: Date et heure de la course
|
||||
- lieu_details: Détails du lieu
|
||||
- nb_epreuves: Nombre d'épreuves
|
||||
|
||||
#### course_epreuves.csv (généré par scrape_course_details.py)
|
||||
- course_id: ID unique de la course
|
||||
- epreuve_id: ID unique de l'épreuve
|
||||
- epreuve_nom: Nom complet de l'épreuve
|
||||
- epreuve_numero: Numéro de l'épreuve dans la course
|
||||
- epreuve_distance: Distance (ex: 100m, 10km)
|
||||
- epreuve_categorie: Catégorie (ex: Seniors, Vétérans)
|
||||
- epreuve_sexe: Sexe (M/F)
|
||||
- epreuve_type: Type d'épreuve (Piste, Cross, Trail, Route, Relais)
|
||||
- participants: Nombre de participants
|
||||
- url_resultats: URL des résultats
|
||||
- nom: Nom de la course
|
||||
- date: Date de la course
|
||||
- lieu: Lieu de la course
|
||||
- lien: URL vers la page de la course
|
||||
- type: Type de course (Cross, Stade, Route, etc.)
|
||||
- categorie: Catégorie de la compétition
|
||||
|
||||
#### results.csv
|
||||
- place: Place obtenue
|
||||
@@ -353,6 +453,8 @@ data/
|
||||
| `monitor_scraping.py` | Surveillance en temps réel du scraping |
|
||||
| `scrape_all_periods.py` | Scraping complet par périodes |
|
||||
| `athlete_summary.py` | Génération de résumés par athlète |
|
||||
| `get_club_results.py` | Extraction des résultats d'un club |
|
||||
| `scrape_course_details.py` | Scraping des détails et épreuves des courses |
|
||||
|
||||
## 🚀 Performance
|
||||
|
||||
@@ -374,7 +476,15 @@ Note: Chaque driver Chrome consomme ~200-300 Mo de RAM.
|
||||
|
||||
## 📝 Version
|
||||
|
||||
### v1.2.0 (Dernière mise à jour)
|
||||
### v1.3.0 (Dernière mise à jour)
|
||||
- **Nouveau**: Script `get_club_results.py` pour extraire les résultats d'un club depuis le CSV
|
||||
- **Nouveau**: Script `scrape_course_details.py` pour récupérer les détails et épreuves des courses
|
||||
- **Nouveau**: Extraction des numéros de compétition (frmcompetition)
|
||||
- **Nouveau**: Extraction des épreuves avec distance, catégorie et sexe
|
||||
- **Nouveau**: Extraction des liens vers les sites web des courses
|
||||
- **Amélioré**: Recherche flexible de clubs avec correspondance floue
|
||||
|
||||
### v1.2.0
|
||||
- **Nouveau**: Multithreading pour accélérer le scraping (4 workers par défaut)
|
||||
- **Nouveau**: Commande `check` pour détecter le nombre total de pages et de courses
|
||||
- **Nouveau**: Détection automatique de la pagination et estimation du temps
|
||||
|
||||
Reference in New Issue
Block a user