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:
Muyue
2026-01-02 11:54:56 +01:00
parent f6c8e889d5
commit 0bd65b1d3f
3 changed files with 629 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
#!/usr/bin/env python3
"""
Scraper FFA - Version avec arguments en ligne de commande
Ce script scrape les données de la FFA jour par jour.
Les dates peuvent être spécifiées en ligne de commande.
"""
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
import argparse
from datetime import datetime
from scripts.scraper_jour_par_jour import FFAScraperDaily
def main():
"""Point d'entrée principal avec arguments"""
parser = argparse.ArgumentParser(description='Scraper FFA - Approche jour par jour')
parser.add_argument('--start-date', type=str, default='2024-01-01',
help='Date de début (format YYYY-MM-DD). Défaut: 2024-01-01')
parser.add_argument('--end-date', type=str, default='2026-08-01',
help='Date de fin (format YYYY-MM-DD). Défaut: 2026-08-01')
parser.add_argument('--output-dir', type=str, default='data',
help='Répertoire de sortie. Défaut: data')
parser.add_argument('--no-results', action='store_true',
help='Ne pas récupérer les résultats (uniquement les courses)')
args = parser.parse_args()
# Valider les dates
try:
datetime.strptime(args.start_date, '%Y-%m-%d')
datetime.strptime(args.end_date, '%Y-%m-%d')
except ValueError:
print("❌ Erreur: Les dates doivent être au format YYYY-MM-DD")
sys.exit(1)
print("=" * 60)
print("🔄 Scraper FFA - Approche jour par jour")
print("=" * 60)
print(f"Période: {args.start_date} au {args.end_date}")
print(f"Récupération des résultats: {'Non' if args.no_results else 'Oui'}")
print(f"Répertoire de sortie: {args.output_dir}")
print(f"Fichiers de sortie:")
print(f" - {args.output_dir}/courses_daily.csv")
print(f" - {args.output_dir}/results_daily.csv")
print("=" * 60)
scraper = FFAScraperDaily(output_dir=args.output_dir)
stats = scraper.run(args.start_date, args.end_date, fetch_results=not args.no_results)
print("\n" + "=" * 60)
print("✅ Scraping terminé!")
print("=" * 60)
print(f"Jours traités: {stats['total_days']}")
print(f"Courses récupérées: {stats['total_courses']}")
print(f"Résultats récupérés: {stats['total_results']}")
print("=" * 60)
if __name__ == "__main__":
main()