Esta sesión, titulada "Visualización Geoespacial con Python, Web Scraping y Folium", organizada por PyData Milton Keynes, presenta una charla de Hugh Evans, un Senior Developer Advocate en Aiven. Él discute un proyecto personal donde construyó mapas interactivos personalizados para rastrear y visualizar grupos de encuentros tecnológicos alrededor del mundo.
Aquí hay un resumen de los temas y técnicas clave cubiertos en la presentación:
La Inspiración y el Problema: El objetivo de Hugh era hablar en cada grupo de PyData en el Reino Unido dentro de un año. Sin embargo, encontró que el mapa oficial proporcionado por Meetup tenía varios problemas, como colocar ciudades en ubicaciones incorrectas y no mostrar si un grupo estaba actualmente activo o inactivo [10:08].
Web Scraping con Playwright: Para construir un mejor mapa, comenzó raspando datos directamente de Meetup. Usó Playwright, una herramienta de automatización de navegador sin cabeza, para navegar por el sitio, cargar los elementos y extraer información como nombres de grupos, ubicaciones y eventos próximos [13:41].
Limpieza de Datos y Geoencoding: Debido a que las coordenadas originales de Meetup eran defectuosas, Hugh utilizó la biblioteca geopy y la API de Nominatim. Al introducir los nombres de las ciudades y países en la API, pudo recuperar coordenadas de longitud y latitud precisas para colocar correctamente los grupos en su mapa [16:39].
Construcción de Mapas con Folium: Con los datos limpios en un DataFrame de Pandas, utilizó la biblioteca folium para generar mapas interactivos. Agregó componentes HTML personalizados para crear tooltips que muestran información del grupo al pasar el cursor, e implementó un código de colores para distinguir visualmente entre grupos muy activos, grupos inactivos y comunidades recién formadas [23:29].
Escalando la Pipeline con Apache Kafka: A medida que el proyecto creció de mapear solo grupos de PyData en el Reino Unido a mapear decenas de miles de encuentros tecnológicos a nivel global, su único script de scraping en Python se volvió demasiado lento. Para resolver esto, rediseñó su arquitectura utilizando Apache Kafka como un corredor de mensajes distribuido. Esto le permitió escalar la carga de trabajo horizontalmente a través de múltiples procesos de trabajo, reduciendo el tiempo de scraping de días a solo unas pocas horas [35:57].
Alojamiento y Despliegue: Finalmente, discute cómo aloja los mapas interactivos resultantes y las herramientas de búsqueda completamente gratis utilizando GitHub Pages y un frontend ligero en HTML/CSS respaldado por un archivo de datos JSON en caché [51:24].
Aquí hay algunos enlaces a recursos como prometió (por Hugh Evans):