Cette session, intitulée "Visualisation géospatiale avec Python, Web Scraping et Folium", organisée par PyData Milton Keynes, présente une intervention de Hugh Evans, un Senior Developer Advocate chez Aiven. Il discute d'un projet personnel où il a construit des cartes interactives personnalisées pour suivre et visualiser les groupes de meetups technologiques à travers le monde.
Voici un résumé des principaux sujets et techniques abordés dans la présentation :
L'inspiration et le problème : L'objectif de Hugh était de parler à chaque groupe PyData au Royaume-Uni dans l'année. Cependant, il a constaté que la carte officielle fournie par Meetup avait plusieurs problèmes, comme le placement incorrect des villes et l'absence d'indication sur l'activité actuelle d'un groupe [10:08].
Web Scraping avec Playwright : Pour construire une meilleure carte, il a commencé par extraire des données directement depuis Meetup. Il a utilisé Playwright, un outil d'automatisation de navigateur sans interface graphique, pour naviguer sur le site, charger les éléments et extraire des informations telles que les noms de groupes, les emplacements et les événements à venir [13:41].
Nettoyage des données et géocodage : Comme les coordonnées originales de Meetup étaient erronées, Hugh a utilisé la bibliothèque geopy et l'API Nominatim. En fournissant les noms de villes et de pays à l'API, il a pu récupérer des coordonnées de longitude et de latitude précises pour placer correctement les groupes sur sa carte [16:39].
Création de cartes avec Folium : Avec les données nettoyées dans un DataFrame Pandas, il a utilisé la bibliothèque folium pour générer des cartes interactives. Il a ajouté des composants HTML personnalisés pour créer des infobulles affichant des informations sur les groupes au survol, et il a mis en œuvre un code couleur pour distinguer visuellement les groupes très actifs, les groupes inactifs et les nouvelles communautés [23:29].
Mise à l'échelle du pipeline avec Apache Kafka : À mesure que le projet est passé de la cartographie des seuls groupes PyData du Royaume-Uni à la cartographie de dizaines de milliers de meetups technologiques dans le monde, son script de scraping Python unique est devenu beaucoup trop lent. Pour résoudre ce problème, il a redessiné son architecture en utilisant Apache Kafka comme courtier de messages distribué. Cela lui a permis de répartir la charge de travail horizontalement sur plusieurs processus de travail, réduisant le temps de scraping de plusieurs jours à seulement quelques heures [35:57].
Hébergement et déploiement : Enfin, il discute de la manière dont il héberge les cartes interactives et les outils de recherche entièrement gratuitement en utilisant GitHub Pages et un frontend HTML/CSS léger soutenu par un fichier de données JSON mis en cache [51:24].
Voici quelques liens vers des ressources comme promis (par Hugh Evans) :