Mikroformate und Karten

Nun, da eine statische Seite mit Adressen vorliegt, besteht das nächste Problem darin, diese Daten abzurufen und sie an die Programmierschnittstelle von Google Maps weiterzugeben – man muss einen Scraper bauen. Dies lässt sich mit PHP 5 unter Verwendung der DOMDocument-Klasse schnell und einfach bewältigen.

Die Datei mit dem Listing wird mittels der loadHTMLFile-Methode geladen, dann kann’s losgehen. Da sich die Elemente, um die es geht, allesamt in Listeneinträgen befinden, werden nur die li-Elemente aufgerufen. Auf der Karte werden der Name der Nutzergruppe und die Adresse angezeigt, wenn also Kindelemente des Listeneintrags den Klassenwert „rl fn“ haben, ist klar, dass sich der Name im Knotenwert dieses Elements befindet. Dann muss die Adresse ausgelesen werden, die am Element „address“ leicht zu erkennen ist. Es muss also lediglich auf den nodeName „address“ prüfen, um die Adresse zu erhalten.

Dann arbeitet man das Adresselement ab und speichert die einzelnen Adresswerte in einem Array, das benutzt wird, um eine Anfrage an die API von Google Maps zu schicken, mit der die Längen- und Breitengrade für die Adressen im CSV-Format angefordert werden.

Die zurückgegebene CSV-Datei hat die folgende Struktur:


Alle diese Daten können also leicht ausgelesen werden, indem die CSV-Datei anhand der Kommata zerlegt wird.

Wenn als Antwortcode „OK (200)“ zurückgegeben wird, wird die Adresse aufbereitet, damit sie von Menschen besser gelesen werden kann, und in einer Vorlage gespeichert, bei der der Name der Nutzergruppe der Adresse vorangestellt wird.
Das Array mit den Ergebnissen wird dann serialisiert, codiert und zur späteren Verwendung in einer globalen Variablen gespeichert.

Wie zu erwarten ist es sehr zeitintensiv, für jede Adresse auf einer gegebenen Seite eine Anfrage an Google zu schicken, man trennt also die Datei, die die Ergebnisse einholt – in diesem Fall den Scraper, von der Seite, die die Ergebnisse auf einer Google-Karte darstellt. Die vom Scraper ermittelten Ergebnisse werden mittels der Cache-Funktionen des Content-Management-Systems zwischengespeichert, um den Overhead zu reduzieren und die Anzeige der Karte zu beschleunigen, man kann sie aber auch in einer Datei speichern und würde dasselbe Ergebnis erzielen.

Hier der Code für den Scraper:


Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Mikroformate und Karten

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *