Saltar al contenido
← Todos los proyectos

Fantasy Voley

Liga fantasy de voleibol español, con usuarios reales y un scraper que tiene que portarse bien.

Año
2024 — actualidad
Rol
Único ingeniero — ingesta de datos, API y front
Stack
Python PostgreSQL Neon Railway Vue

Problema

El voleibol español tiene una afición entregada y ninguna liga fantasy. La federación publica plantillas y resultados en un portal ASP.NET heredado, sin API, con identificadores de equipo inestables y un HTML que cambia entre temporadas.

Enfoque

Construí una capa de ingesta que trata el portal como una fuente hostil: el identificador de jugador es estable y se usa como clave de unión, el de equipo no lo es y se resuelve por temporada. El scraping corre programado, escribe en una tabla de staging y solo promociona una temporada cuando los recuentos tienen sentido, de modo que un cambio silencioso de HTML degrada a "no hay actualización" en vez de "todas las plantillas están vacías".

Resultado

Una liga funcionando con jugadores reales, actualizada automáticamente durante la temporada, y un modelo de datos que sobrevivió a un rediseño de la web de la federación sin reescribirse.

La lección: no te fíes de lo que viene de fuera

Todo scraper acaba rompiéndose. La diferencia entre un proyecto de fin de semana y algo que usa gente es qué pasa cuando ocurre. Aquí, una puerta de validación entre staging y producción hace que un parseo roto se vea como datos viejos y no como datos corruptos, que siempre es el fallo más barato.

Añade las cifras cuando las tengas: usuarios registrados, partidos ingeridos, temporadas cubiertas.