Scrapeando lesiones
Mi gente cercana sabe que he sido operado recientemente de la rodilla, ya que me rompí el menisco jugando al fútbol. Y, a raíz de esto, me picó la curiosidad de conocer las estadísticas de lesiones en jugadores de fútbol profesionales. Así que, se me ocurrió hacer un pequeño script que «scrapeara» los datos de jugadores de la liga BBVA lesionados por jornada, y mostrar un gráfico agrupado por lesiones.
El resultado se puede comprobar en esta web.
En cuanto a la parte técnica, el código de la aplicación se puede consultar en mi repositorio de Github:
- Web-scrapping : Script : He utilizado Selenium con Python, por su sencillez de uso. El IDE que utilizo para debuggear es PyCharm. Los datos se leen desde esta web de goal.com. El script genera un fichero .csv con los datos de los nombres de jugadores y su lesión. Posteriormente, éste será el fichero que se leerá de la web para generar la gráfica de presentación.
- Chart.js : Para la generación de la gráfica. En concreto, me basé en este ejemplo de pie chart. Muy sencillo y rápido tener la gráfica automáticamente. Lo que me llevó más tiempo fue el procesamiento de los datos: leerlos desde CSV con jquery-csv y ordernarlos. Los colores son generados siempre aleatoriamente.
- Bootstrap : Diseño responsive, para que la web se viese correctamente en dispositivos móviles.
En este prototipo, sólo he analizado la última jornada de liga a fecha de hoy (jornada 31). Tuve problemas para encontrar alguna página o servicio que ofreciese datos de jornadas pasadas, para hacer una análisis más extenso. Todos los que encontré, daban sólo los datos de la jornada actual. Por tanto, y a falta de encontrar alguna API que proporcione estos historiales, lo óptimo sería automatizar el proceso para ir recogiendo los datos semana a semana.
Por último, apunto alguno de los «todo’s» que he ido recogiendo a lo largo del micro-proyecto: recoger datos del equipo al que pertenece el jugador, filtros de búsqueda, utilizar D3.js para mejorar la calidad y funcionalidad de las gráficas (leyendas, interactividad, etc.).
Tiempo aproximado de desarrollo: 7 horas