Una librería para scrapear datos necesarios de la pagina FBREF
Project description
📊 fbref_scraper
fbref_scraper es una librería en Python que permite extraer de forma automática estadísticas de fútbol desde la página FBref.com, incluyendo información detallada sobre jugadores, equipos, partidos y comparativas avanzadas. Facilita el trabajo posterior en la creación de informes, análisis avanzados y visualización de datos.
📌 Características principales:
- Gestión de ligas y temporadas: Selecciona fácilmente la liga y temporada de interés.
- Extracción de estadísticas de jugadores: Obtén tablas limpias y combinadas de métricas estándar, avanzadas, porteros, etc.
- Extracción de estadísticas de equipos: Descarga estadísticas de equipos por diferentes categorías (posesión, defensa, ataque, porteros...).
- Datos de partidos: Accede a tablas de tiros, estadísticas principales y datos de porteros de partidos individuales.
- Informes de reclutamiento: Extrae tablas de jugadores similares y percentiles avanzados de informes individuales.
- Automatización y primera limpieza: Funciones robustas para hacer la primera limpieza, normalizar y guardar los datos en CSV listos para análisis.
📁 Estructura del proyecto
fbref_scraper/
│
├── __init__.py
│ ├── league_manager.py # Gestión de ligas y generación de URLs
│ ├── player_data.py # Extracción y limpieza de datos de jugadores
│ └── team_data.py # Extracción y limpieza de datos de equipos
│
├── tests/
│ └── main.py # Archivo de ejemplo de uso
│
├── setup.py # Archivo de configuración para empaquetar
├── requirements.txt # Dependencias del proyecto
└── README.md
🚀 Comandos de Instalación e actualización:
· Instala desde PyPI:
pip install fbref_scraper
O directamente desde GitHub:
pip install git + https://github.com/CescBlanco/proyecto_libreria_Evolve
· Puedes crear un entorno virtual (windows):
python -m venv libreria_venv
libreria_venv/scripts/activate
· En caso que se quiera actualizar la libreria hacer:
pip install --upgrade fbref_scraper
· Instalar el paquete en modo desarrollo:
pip install -e .
🛠 Requisitos de instalación:
requests
beautifulsoup4
pandas
numpy
lxml
Instalar dependencias necesarias:
pip install -r requirements.txt
Ejecucion de las pruebas:
Para ejecutar las pruebas y verificar que todo funciona, utiliza:
python .\tests\main.py
🧠 Como se usa?
· Importar la clase:
from fbref_scraper.league_manager import LeagueManager
manager= LeagueManager()
· Crear URLs para scraping:
player_urls = manager.generate_player_urls()
teams_urls = manager.generate_team_urls()
· Importar modulos para poder utilizar todas las funciones de extracción:
from fbref_scraper.player_data import *
from fbref_scraper.team_data import *
🔍 Demostraciones rápidas:
· Obtener dataframe de los jugadores de una liga con un tipo de estadística de la temporada:
#PASOS PARA PODER ELEGIR LA URL DESEADA:
# 1: Elegir liga dispoible en player_urls: ['La Liga', 'Premier League', 'Serie A', 'League 1', 'Bundesliga']
liga= 'La Liga'
# 2: Elegir la temporada disponible en player_urls: ['2024-2025', '2023-2024', '2022-2023', '2021-2022', '2020-2021']
temporada = '2024-2025'
# 3: Elegir una estadísticas disponibles: ['Standard Stats', 'Goalkeeping', 'Advanced Goalkeeping', 'Shooting', 'Passing','Pass Types','Goal and Shot Creation', 'Defensive Actions', 'Possession', 'Playing Time', 'Miscellaneous Stats']
tipo_estadistica= 'Standard Stats'
# 4: Creacion de la url para la funcion:
url_player = player_urls[liga][temporada][tipo_estadistica]
print("URL:", url_player)
print('------')
#EJEMPLO DE USO:
creacion_df_jugadores_estadistica_unica(url_player,guardar_csv=True, league=liga, season=temporada)
· Obtener dataframe de todas las estadisticas de los jugadores de campo para una liga y una temporada concreta:
#PASOS PARA PODER ELEGIR EL DATAFRAME DESEADO:
# 1: Elegir liga dispoible en player_urls: ['La Liga', 'Premier League', 'Serie A', 'League 1', 'Bundesliga']
liga = 'Ligue 1'
# 2: Elegir la temporada disponible en player_urls: ['2024-2025', '2023-2024', '2022-2023', '2021-2022', '2020-2021']
temporada= '2024-2025'
#EJEMPLO DE USO:
creacion_df_players_torneo_fbref(league=liga, season=temporada,
stat_list=["Standard Stats", "Shooting", "Passing", "Pass Types","Goal and Shot Creation", "Defensive Actions", "Possession", "Miscellaneous Stats"], player_urls=player_urls, guardar_csv=True, guardar_csv_individuales=False)
· Obtener dataframe de todas las estadisticas de los porteros para una liga y una temporada concreta:
#PASOS PARA PODER ELEGIR EL DATAFRAME DESEADO:
# 1: Elegir liga dispoible en player_urls: ['La Liga', 'Premier League', 'Serie A', 'League 1', 'Bundesliga']
liga = 'Premier League'
# 2: Elegir la temporada disponible en player_urls: ['2024-2025', '2023-2024', '2022-2023', '2021-2022', '2020-2021']
temporada= '2024-2025'
#EJEMPLO DE USO:
creacion_df_porteros_torneo_fbref(league=liga, season=temporada,
stat_list=['Goalkeeping', 'Advanced Goalkeeping'], player_urls=player_urls, guardar_csv=True, guardar_csv_individuales=False)
· Obtener el dataframe de los equipos y equipos_vs de una liga con un tipo de estadística de la temporada:
#PASOS PARA PODER ELEGIR LA URL DESEADA:
# 1: Elegir liga dispoible en player_urls: ['La Liga', 'Premier League', 'Serie A', 'League 1', 'Bundesliga']
liga_equipos = 'La Liga'
# 2: Elegir la temporada disponible en player_urls: ['2024-2025', '2023-2024', '2022-2023', '2021-2022', '2020-2021']
temporada_equipos= '2024-2025'
# 3: Elegir una estadísticas disponibles: ['Standard Stats', 'Goalkeeping', 'Advanced Goalkeeping', 'Shooting', 'Passing','Pass Types', 'Goal and Shot Creation', 'Defensive Actions', 'Possession', 'Playing Time', 'Miscellaneous Stats']
tipo_estadistica_equipos = 'Miscellaneous Stats'
# 4: Creacion de la url para la funcion:
url_stat_equipo = player_urls[liga_equipos][temporada_equipos][tipo_estadistica_equipos]
print("URL:", url_stat_equipo)
print('------')
#EJEMPLO DE USO PARA EQUIPO:
obtener_tabla_equipos_estadistica_unica(url_stat_equipo, stats_vs=False, guardar_csv= True, league='La Liga', season='2024')
#EJEMPLO DE USO PARA EQUIPO_VS:
obtener_tabla_equipos_estadistica_unica(url_stat_equipo, stats_vs=True, guardar_csv= True, league='La Liga', season='2024')
· Obtener el dataframe de la tabla principal de la liga de interés a partir de una URL:
obtener_tabla_liga_principal('https://fbref.com/en/comps/12/Estadisticas-de-La-Liga')
· Obtener el dataframe de los jugadores más similares al jugador deseable:
#El usuario escoje la url del jugador deseable y lo guarda en una variable para ser usada posteriormente.
url_jugador_yamal= 'https://fbref.com/en/players/82ec26c1/scout/365_m1/Lamine-Yamal-Scouting-Report'
#EJEMPLO DE USO:
obtener_jugadores_similares(url_jugador_yamal)
· Obtener el dataframe de los datos por90 y sus percentiles del jugador deseable:
#Se usa la misma url del jugador desable del caso anterior.
url_jugador_yamal= 'https://fbref.com/en/players/82ec26c1/scout/365_m1/Lamine-Yamal-Scouting-Report'
#EJEMPLO DE USO:
obtener_tabla_datos_jugador_por90_percentiles(url_jugador_yamal)
· Obtener dataframe de los datos de los tiros de un partido para ambos equipos y individualmente:
#El usuario escoje la url del partido deseable y lo guarda en una variable para ser usada posteriormente.
url_partido = 'https://fbref.com/en/partidos/20bdd334/Athletic-Club-Barcelona-Mayo-25-2025-La-Liga'
s
#EJEMPLO DE USO:
tabla_tiros_completo,tabla_tiros_local, tabla_tiros_visitante= obtener_tabla_tiros_partido(url_partido, tiros_por_equipo= True)
· Obtener el dataframe de las estadísticas básicas de los jugadores e porteros de un partido para ambos equipos y individualmente:
#Guardar la url del partido elegido:
url_partido = 'https://fbref.com/en/partidos/20bdd334/Athletic-Club-Barcelona-Mayo-25-2025-La-Liga'
#EJEMPLO DE USO:
estadisticas_local, estadisticas_visitante, keeper_local, kepper_visitante= obtener_tabla_estadisticas_principales_partido(url_partido, keepers= True)
Licencia
Este proyecto está licenciado bajo la Licencia MIT.
Autor
Desarrollado por Cesc Blanco Arnau.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fbref_scraper_cesc-0.1.0.tar.gz.
File metadata
- Download URL: fbref_scraper_cesc-0.1.0.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce745a528890aac9a077ce13c854ed94e119f43fc382dc0ef1df955d7a2d62ed
|
|
| MD5 |
31b8791e5844f6158238da9963cc6809
|
|
| BLAKE2b-256 |
48166292a1c020f5860366f73a57be0024f45962ff6af4b297aa59654710264d
|
File details
Details for the file fbref_scraper_cesc-0.1.0-py3-none-any.whl.
File metadata
- Download URL: fbref_scraper_cesc-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60d4444e2751d5a599b5acf66daff4c4af55fbeb2cfa518e8ab85c9718824d66
|
|
| MD5 |
3bbe24fa606a38c07b7425c7248dc582
|
|
| BLAKE2b-256 |
94d49a56f8431e92ef1dab5c5190b425de11cccc2cab3f4d5408b58924d16377
|