Esta sessão, intitulada "Visualização Geoespacial com Python, Web Scraping e Folium", organizada pelo PyData Milton Keynes, apresenta uma palestra de Hugh Evans, um Senior Developer Advocate na Aiven. Ele discute um projeto pessoal onde construiu mapas interativos personalizados para rastrear e visualizar grupos de encontros de tecnologia ao redor do mundo.
Aqui está um resumo dos principais tópicos e técnicas abordados na apresentação:
A Inspiração e o Problema: O objetivo de Hugh era falar em todos os grupos PyData no Reino Unido dentro de um ano. No entanto, ele descobriu que o mapa oficial fornecido pelo Meetup tinha vários problemas, como colocar cidades em locais incorretos e não mostrar se um grupo estava atualmente ativo ou inativo [10:08].
Web Scraping com Playwright: Para construir um mapa melhor, ele começou extraindo dados diretamente do Meetup. Ele usou o Playwright, uma ferramenta de automação de navegador headless, para navegar no site, carregar os elementos e extrair informações como nomes de grupos, locais e eventos futuros [13:41].
Limpeza de Dados e Geoencoding: Como as coordenadas originais do Meetup estavam com falhas, Hugh usou a biblioteca geopy e a API Nominatim. Ao inserir os nomes das cidades e países na API, ele conseguiu recuperar coordenadas de longitude e latitude precisas para posicionar corretamente os grupos em seu mapa [16:39].
Construindo Mapas com Folium: Com os dados limpos em um DataFrame do Pandas, ele usou a biblioteca folium para gerar mapas interativos. Ele adicionou componentes HTML personalizados para criar tooltips que exibem informações do grupo ao passar o mouse, e implementou codificação de cores para distinguir visualmente entre grupos altamente ativos, grupos inativos e comunidades recém-criadas [23:29].
Escalando o Pipeline com Apache Kafka: À medida que o projeto cresceu de mapear apenas grupos PyData do Reino Unido para mapear dezenas de milhares de encontros de tecnologia globalmente, seu único script de scraping em Python se tornou muito lento. Para resolver isso, ele redesenhou sua arquitetura usando o Apache Kafka como um broker de mensagens distribuído. Isso permitiu que ele escalasse a carga de trabalho horizontalmente entre vários processos de trabalho, reduzindo o tempo de scraping de dias para apenas algumas horas [35:57].
Hospedagem e Implantação: Finalmente, ele discute como hospeda os mapas interativos resultantes e ferramentas de busca totalmente gratuitas usando GitHub Pages e um frontend leve em HTML/CSS apoiado por um arquivo de dados JSON em cache [51:24].
Aqui estão alguns links para recursos conforme prometido (por Hugh Evans):