Der erste Ajax-Scraper oder: Wer ist der Medienstar im Zolli?

gorilla_mobali_ZOB5526

Der Zoo Basel hat eine Website, die intensiv auf asynchrones Javascript (Ajax) setzt – sich die anzuzeigenden Daten also erst nachträglich holt. Gleichzeitig verfügt der Zoo über einen umfangreichen Katalog der Tierarten mit jeweiligen News-Meldungen dazu. Man könnte also die Frage beantworten, welche Tierart der Medienstar ist unter den Zolli-Bewohnern und welche armen Geschöpfe noch nie mit einer News-Mitteilung beehrt worden sind.

Mit normalen Scrapern können Ajax-Inhalte nicht eingelesen werden. Ein stackoverflow-Nutzer beschreibt das so, dass die Seite gerendert werden muss und die meisten Server-Side-Scripts dies nicht tun. Er verweist auf Alternativen und auf einen manuellen Weg, der gar nicht so kompliziert ist und beim Zolli-Scraper zielführend.

Mittels Chrome Dev Tools habe ich (wie im verlinkten Beitrag beschrieben) die relevante Datei gefunden, deren URL schaut so aus:

http://www.zoobasel.ch/dmxDatabaseSources/view_news_tiere_url.php?TiereID=290

Dort liegen die Daten als JSON-Datei vor, was eine Weiterverarbeitung mit PHP sehr einfach macht. Eine zweite JSON-Datei führt die ID-Nummern der Tiere auf, das Script hat diese einzeln abgearbeitet (mittels Javascript-Reload und Übergabe einer Variabel*) und alle Infos in eine Datenbank geschrieben. Die Auswertung sah folgendermassen aus:

$alleeintraege = $wpdb->get_results( "SELECT * FROM zolli");
foreach ( $alleeintraege as $eintrag ) {
 $anzahlnachname[$eintrag->tierartname]++;
 $anzahlnachtiergruppe[$eintrag->tiergruppe]++;
 $tierartenmitnews[] = $eintrag->tierartname;
}

arsort($anzahlnachname);
foreach ($anzahlnachname as $key => $val) {
 echo $key." (".$val.")<br/>";
}

$armeschlucker = array_diff($alletierarten, $tierartenmitnews);

var_dump($anzahlnachtiergruppe);

var_dump($armeschlucker );

Das Resultat ist in unstrukturierter Form auf http://samuelhufschmid.ch/zolli/ zu finden. Und noch ein Wort zu den Ergebnissen: Mit 31 Mitteilungen sind die Gorillas die Medien-Stars des Basler Zollis – mehr dazu hier:

*diese Vorgehensweise habe ich bereits beschrieben, jedoch noch nicht veröffentlicht, weil die dazugehörige Recherche noch nicht abgeschlossen ist.

 

Autor: Samuel Hufschmid

Jounalist bei bz Basel, Papi, Organisator Swiss Kubb Open, mit Interesse an Datenjournalismus.

Kommentar verfassen