Diese Sitzung mit dem Titel "Geospatial Visualisierung mit Python, Web Scraping und Folium", organisiert von PyData Milton Keynes, umfasst eine Präsentation von Hugh Evans, einem Senior Developer Advocate bei Aiven. Er spricht über ein persönliches Projekt, bei dem er benutzerdefinierte, interaktive Karten erstellt hat, um Tech-Meetup-Gruppen auf der ganzen Welt zu verfolgen und zu visualisieren.
Hier ist eine Zusammenfassung der wichtigsten Themen und Techniken, die in der Präsentation behandelt wurden:
Die Inspiration und das Problem: Hughs Ziel war es, innerhalb eines Jahres bei jeder PyData-Gruppe im Vereinigten Königreich zu sprechen. Er stellte jedoch fest, dass die offizielle Karte von Meetup mehrere Probleme aufwies, wie das falsche Platzieren von Städten und das Versäumnis, anzuzeigen, ob eine Gruppe derzeit aktiv oder inaktiv war [10:08].
Web Scraping mit Playwright: Um eine bessere Karte zu erstellen, begann er damit, Daten direkt von Meetup zu scrapen. Er verwendete Playwright, ein Headless-Browser-Automatisierungstool, um die Seite zu navigieren, die Elemente zu laden und Informationen wie Gruppennamen, Standorte und bevorstehende Veranstaltungen zu extrahieren [13:41].
Datenbereinigung und Geoencoding: Da die ursprünglichen Koordinaten von Meetup fehlerhaft waren, verwendete Hugh die Geopy-Bibliothek und die Nominatim-API. Indem er die Städtenamen und Ländernamen in die API einspeiste, konnte er genaue Längen- und Breitengrade abrufen, um die Gruppen korrekt auf seiner Karte zu platzieren [16:39].
Karten mit Folium erstellen: Mit den bereinigten Daten in einem Pandas DataFrame verwendete er die Folium-Bibliothek, um interaktive Karten zu generieren. Er fügte benutzerdefinierte HTML-Komponenten hinzu, um Tooltips zu erstellen, die Gruppeninformationen beim Überfahren anzeigen, und implementierte eine Farbcode-Kodierung, um zwischen sehr aktiven Gruppen, inaktiven Gruppen und brandneuen Gemeinschaften visuell zu unterscheiden [23:29].
Skalierung der Pipeline mit Apache Kafka: Als das Projekt von der Kartierung nur der UK PyData-Gruppen zur Kartierung von Zehntausenden von Tech-Meetups weltweit wuchs, wurde sein einzelnes Python-Scraping-Skript viel zu langsam. Um dies zu lösen, entwarf er seine Architektur neu und verwendete Apache Kafka als verteilten Nachrichtenbroker. Dies ermöglichte es ihm, die Arbeitslast horizontal über mehrere Arbeitsprozesse zu skalieren und die Scraping-Zeit von Tagen auf nur wenige Stunden zu reduzieren [35:57].
Hosting und Bereitstellung: Schließlich spricht er darüber, wie er die resultierenden interaktiven Karten und Suchwerkzeuge vollständig kostenlos mit GitHub Pages und einem leichten HTML/CSS-Frontend, das von einer zwischengespeicherten JSON-Datendatei unterstützt wird, hostet [51:24].
Hier sind einige Links zu den versprochenen Ressourcen (von Hugh Evans):