Skip to main content

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.

👤 LinkedIn 📧 Correo 🔗 GitHub

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fbref_scraper_cesc-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fbref_scraper_cesc-0.1.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

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

Hashes for fbref_scraper_cesc-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ce745a528890aac9a077ce13c854ed94e119f43fc382dc0ef1df955d7a2d62ed
MD5 31b8791e5844f6158238da9963cc6809
BLAKE2b-256 48166292a1c020f5860366f73a57be0024f45962ff6af4b297aa59654710264d

See more details on using hashes here.

File details

Details for the file fbref_scraper_cesc-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fbref_scraper_cesc-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 60d4444e2751d5a599b5acf66daff4c4af55fbeb2cfa518e8ab85c9718824d66
MD5 3bbe24fa606a38c07b7425c7248dc582
BLAKE2b-256 94d49a56f8431e92ef1dab5c5190b425de11cccc2cab3f4d5408b58924d16377

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page