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.