RSS-Feed

Daten scrapen und bereinigen – so geht’s

Daten sind der Rohstoff für viele Geschichten. Doch auch wenn man sie gefunden hat, kann man sie nicht immer einfach herunterladen. Wie man Daten von Websites scraped und sie so aufbereitet, dass man Berechnungen damit anstellen kann, erklärt Bernd Oswald in diesem Tutorial.

Bei vielen Recherchen spielen Daten, oft in Form von Zahlen, eine große Rolle. Um gut damit arbeiten und eigene Berechnungen anstellen zu können, ist es am besten, wenn die Daten in tabellarischer Form aufbereitet sind. Das hat den Vorteil, dass man sie in einem Tabellenkalkulationsprogramm wie Excel, Google Tabellen oder Libre Office verarbeiten kann. Doch nicht jede Institution bietet die gewünschten Daten fein säuberlich geordnet zum Download per xls-, CSV- oder JSON-Datei an. Dann muss man sich die Rohdaten von der jeweiligen Website „scrapen“, das heißt „herunterkratzen“. Wie das geht, schauen wir uns im Folgenden an.

Daten scrapen

Ganz einfach ist das Scrapen, wenn auf einer HTML-Website Tabellen stehen. Diese kann man dann per Hand markieren und in ein Excel-Dokument kopieren. Eine noch bequemere Alternative sind Browser-Plug-ins, die mit einem Klick Tabellen erkennen und herunterladen, zum Beispiel Table Capture, das für Chrome und für Firefox erhältlich ist. Wenn man auf eine Seite surft, die Tabellen enthält, färbt es sich rot. Wenn man das Table-Capture-Symbol im Browser anklickt, öffnet sich ein Pop-up-Fenster, das anzeigt, welche Tabellen auf der Seite stehen. Man kann dann die gewünschte Tabelle auswählen, per Klick auf das Kopieren-Icon in die Zwischenablage kopieren und mit Strg-V in ein Tabellenkalkulationsprogramm einspeisen. Auch ein direkter Export nach Google Tabellen und ein Download als CSV-Datei (dazu benötigt man die Pro-Version) ist möglich.

Bild: Das Browser-Plug-in Table Capture zeigt an, welche Tabellen es erkannt hat. Mit einem Klick lässt sich die gewünschte Tabelle auswählen und exportieren.

Ein praktisches Tool zum Datenscrapen, für das man keine Programmierkenntnisse benötigt, ist import.io. Nach dem Log-in auf der Seite kann man in der kostenlosen Community-Version einen sogenannten „Extractor“ bauen. Dazu gibt man einfach die URL ein, von der man Daten auslesen will. Das Tool generiert eine Vorschau der zu scrapenden Seite. Wenn man rechts oben auf „Extract data from website“ klickt, startet der Download. Anschließend kann man sich die extrahierten Daten in den Formaten Excel, CSV und JSON herunterladen. In der kostenlosen Community-Variante sind pro Monat 500 solcher Abfragen frei. Wer mehr braucht oder Seiten regelmäßig automatisiert scrapen will, braucht einen Pro-Account (Preis auf Anfrage).

Vorschau einer zu scrapenden Seite in Import.io

kleineAnfragen bereitet Parlamentsdokumente auf

Wer die Arbeit von deutschen Parlamenten auswerten will, kann – zumindest bis Ende 2020 – auf das praktische und kostenlose Tool kleineanfragen.de zurückgreifen. Mit kleinen Anfragen können Abgeordnete in Parlamenten ihrer Regierung Fragen stellen (in denen es oft um Geldbeträge geht); die Regierung muss diese Anfragen innerhalb einer bestimmten Frist beantworten und veröffentlichen. Dies geschieht in Form von sogenannten Drucksachen. kleineAnfragen hat für die Webseiten des Bundestags und der 16 Länderparlamente jeweils eigene Scraper geschrieben und macht die Drucksachen auf kleineanfragen.de auffind-, durchsuch- und verlinkbar. Man gibt einfach einen Suchbegriff ein und kann die Treffer dann nach Parlament bzw. Bundesland, Typ der Anfrage (neben der kleinen gibt es auch große und schriftliche Anfragen), Fraktion, Datum und Seitenanzahl filtern. Sehr praktisch ist auch die Funktion, sich nur Dokumente anzeigen zu lassen, die eine Tabelle enthalten.

Sollte kleineanfragen.de Ende 2020 tatsächlich abgeschaltet werden, muss man auf den einzelnen Parlamentsseiten selbst nach den gewünschten Dokumenten suchen. Beim Bundestag macht man das am besten mit dem Dokumentations- und Informationssystem für Parlamentarische Vorgänge, kurz DIP. Wie die Suche im DIP genau funktioniert, erklärt der Bundestag in diesem PDF.

Wie man Tabellen aus PDFs extrahiert

Parlamente arbeiten mit PDF-Dateien – was für Datenjournalisten unpraktisch ist, weil das PDF-Format nicht maschinenlesbar ist. Um die in PDF-Dateien enthaltenen Tabellen zu „befreien“, gibt es einige Tools; sehr beliebt in der Datenjournalisten-Szene ist Tabula. Diese Browser-basierte Anwendung erkennt Tabellen in einem PDF automatisch und extrahiert sie. Es ist auch möglich, die Tabellen, die extrahiert werden sollen, manuell auszuwählen. In einer Vorschau-Ansicht kann man dann sehen, ob Tabula die Spalten korrekt erkannt hat. Falls die standardmäßig eingestellte „Stream“-Extraktions-Methode nicht funktioniert hat, kann man mit einem Klick auf die „Lattice“-Methode umstellen und testen, ob diese bessere Ergebnisse bringt. In fast allen Fällen liefert eine dieser Methoden eine saubere Tabelle. Für den Export der Tabellen stehen unter anderem die gängigen Dateiformate CSV, TSV und JSON zur Verfügung.

Auswahl einer zu extrahierenden Tabelle aus einem PDF im Tabula-Backend.

Daten säubern und strukturieren

Je nachdem, wie man an seine Daten gelangt ist, gibt es große Unterschiede bei deren „Sauberkeit“ – damit sind einheitliche Formatierung und Schreibweisen gemeint. Statistiken von Behörden sind in aller Regel sauber formatiert.

Bevor man Hand an den Datensatz anlegt, und sei es nur zum Formatieren, empfiehlt es sich, die Originaldatei abzuspeichern und mit einer Kopie zu arbeiten. Falls der Computer abstürzt oder sonst etwas schiefgeht, kann man dann auf die Originaldatei zurückgreifen. Denn schon beim Import eines Datensatzes in ein Tabellenkalkulationsprogramm wie MS Excel oder Google Tabellen kann etwas durcheinandergeraten.

Nach dem Import sollte man daher Folgendes überprüfen:

  • Ist Text auch wirklich als Text und sind Zahlen als Zahlen formatiert? Excel und Co. können natürlich nur mit Zahlen rechnen. Text wird in der Regel linksbündig angezeigt, Zahlen rechtsbündig. Ist das nicht der Fall, muss man nachhelfen und die entsprechenden Zellen oder Spalten (über das Format-Menü) manuell formatieren.
  • Sind die Schreibweisen einheitlich? Die gleiche Sache muss auch exakt gleich benannt sein, sonst ist die Verwirrung groß: Verwendet man „Garmisch-Partenkirchen“ oder „Markt Garmisch-Partenkirchen“? Alle Tabellenkalkulationsprogramme verfügen über eine Suchen-und-Ersetzen-Funktion. Hier könnte man zum Beispiel nach „Markt Garmisch-Partenkirchen“ suchen und diesen Begriff durch „Garmisch-Partenkirchen“ ersetzen.
    Ist die Formatierung von Zahlen einheitlich? 3000, 3.000, 3 000 oder 3.000,00? Oder bei Währungen 3000 €, 3.000 Euro oder 3 000 EUR? Auch hier kann Suchen-und-Ersetzen sehr hilfreich sein. So kann man zum Beispiel „Euro“ oder „EUR“ durch „“ ersetzen, das heißt im Ersetzen-Feld einfach nichts eintragen. Wenn der Text (und das ist „Euro“ bzw. „EUR“) entfernt wurde, erkennen die Tabellenprogramme Zahlen leichter.
    Für deutsche Orte empfiehlt es sich, mit dem Amtlichen Gemeindeschlüssel (AGS) zu arbeiten. Jeder Ort hat seine eigene, unverwechselbare AGS-Zahl, also seine eigene ID als Identifikator; München zum Beispiel 09162, Töging am Inn etwa die 09171132. Dieser Code ist auch praktisch, wenn man die Daten in ein Visualisierungs-Programm lädt, mit dem man Karten erstellen kann. Das Programm (zum Beispiel Datawrapper) erkennt dann den Ort anhand seiner AGS und es kommt zu keinen Verwechslungen.
  • Ist das Format für das Datum einheitlich? 12.01.1998, 12.1.98 oder 12. Januar 1998? Man sollte sich für eine Systematik entscheiden. Entweder ebenfalls mit Suchen-und-Ersetzen oder indem man im Format-Menü des Tabellenkalkulationsprogramms verschiedene Datums-Formatierungen ausprobiert. Es gibt auch die Möglichkeit, ein benutzerdefiniertes Format zu erstellen.
  • Stehen alle Werte in der richtigen Spalte?
  • Wo gibt es leere Felder und warum sind sie leer?

Um die Fehlerquote so gering wie möglich zu halten, empfiehlt es sich, den Datensatz zu fokussieren, das heißt alle Zeilen und Spalten, die nicht benötigte Information enthalten, zu löschen. (Wir arbeiten ja mit der Kopie …) Je weniger Zeilen und Spalten in einem Dokument sind, desto übersichtlicher ist es und desto leichter findet man sich dort zurecht.

Daten zusammenführen mit dem S-VERWEIS

Vorsicht ist geboten, wenn Daten aus verschiedenen Dateien oder Arbeitsblättern in einer einzigen Datei zusammengeführt werden sollen. Das geht nur, wenn es auch einen gemeinsamen Nenner gibt, entweder in den Spalten oder in den Zeilen.

Ein Beispiel: Die Baulandpreise für alle deutschen Gemeinden liegen für die Jahre 2010 und 2019 in zwei verschiedenen Arbeitsblättern vor. Um den Preisanstieg leichter ausrechnen zu können, wäre es praktischer und übersichtlicher, wenn die beiden Werte auf demselben Arbeitsblatt stünden. In einem solchen Fall ist die S-VERWEIS-Funktion (das S steht für senkrecht) von Tabellenprogrammen sehr hilfreich (in englischsprachigen Versionen heißt sie in der Regel VLOOKUP): Mit dem S-VERWEIS-Befehl lassen sich verschiedene Tabellen zusammenführen, wenn sie über ein gemeinsames Merkmal verfügen. In unserem Beispiel wäre das der oben erwähnte Amtliche Gemeindeschlüssel (AGS).

Um diese Datenfusion auszulösen, gibt man in einer neuen Spalte einen Befehl nach folgender Logik ein:

=SVERWEIS(Suchschlüssel; Bereich; Index)

Der Suchschlüssel ist der Wert oder die ID, nach dem oder der gesucht wird, etwa der AGS, also 09162 für München. Diese Zahl steht sowohl im Arbeitsblatt für 2010 als auch in dem für 2019 – und zwar nicht nur für München, sondern für alle deutschen Städte und Gemeinden. Man klickt auf die Zelle, in der der Suchschlüssel steht, zum Beispiel die Zelle A3. In der Formel steht dann: =SVERWEIS(A3;

Bereich ist der zu durchsuchende Bereich, zum Beispiel in einer anderen Tabelle oder in einem anderen Arbeitsblatt. Zuerst gibt man das Arbeitsblatt an und dann den zu durchsuchenden Zellenbereich. Man kann auch einfach im ursprünglichen Arbeitsblatt den nötigen Bereich manuell markieren, dann fügt das Programm den Zellenbereich automatisch ein – in unserem Beispiel: „2010“!A2:D11544. Das heißt, dass das Programm im Zellenbereich von A2 bis D11544 des Arbeitsblattes „2010“ nach dem Suchschlüssel – hier der AGS – sucht. Die Formel sieht nun so aus: =SVERWEIS(A3;“2010“!A2:D11544;

Index ist der Spaltenindex des Wertes, der zurückgegeben werden soll, das heißt die Nummer der Spalte, in der der gesuchte Wert steht. Wenn der Wert für den Baulandpreis des Jahres 2010 im Ursprungs-Arbeitsblatt in Spalte D steht, trägt man im Feld für die S-VERWEIS-Formel die Ziffer 4 ein, weil D die vierte Spalte ist. Die Formel sieht nun so aus: =SVERWEIS(A3;“2010“!A2:D10797;4)

Drückt man nun auf „Return“, wird der Befehl ausgeführt. Da der Wert für München (AGS 09162) im Jahr 2010 1115,82 Euro betragen hat, wird dieser Wert dann in der Zelle angezeigt, in die man den S-VERWEIS-Befehl eingetragen hat. Um nun diesen Befehl für alle knapp 11.000 Gemeinden Deutschlands zu übernehmen, genügt es, einmal auf das kleine Quadrat in der rechten unteren Ecke der Zelle mit dem S-VERWEIS zu klicken.

Wenn man auf eine Zelle klickt, wird sie farbig eingerahmt (blau wie hier bei Google Tabellen, grün bei MS Excel). Rechts unten befindet sich ein kleines Quadrat, hinter dem sich eine sehr praktische Funktion verbirgt. Klickt man darauf,…

…wird der Befehl, der darin steht – in diesem Beispiel der S-VERWEIS – für alle anderen Zellen in dieser Spalte übernommen. Gerade bei einem Datensatz mit Hunderten oder Tausenden Zeilen ist das sehr hilfreich.

Fazit

Nicht immer bekommen Journalisten Daten in einer maschinenlesbaren Form – das heißt so, dass sie darin eigene Berechnungen anstellen können. In solchen Fällen können Scraping-Tools wie Table Capture oder Import.io helfen, Daten aus Websites in Tabellen zu gießen. Wenn es darum geht, Tabellen aus PDF-Dateien zu extrahieren, helfen Tools wie Tabula.
Hat man die benötigten Daten zusammen, muss man kontrollieren, ob sie alle einheitlich formatiert sind. Erst wenn der Datensatz wirklich „sauber“ ist, kann die Auswertung losgehen. Datenrecherche und -aufbereitung nehmen oft zwei Drittel oder sogar drei Viertel der Recherchezeit in Anspruch. Um eine fehlerhafte Auswertung zu vermeiden, ist das gut investierte Zeit.

Titelillustration: Esther Schaarhüls

Das Magazin Fachjournalist ist eine Publikation des Deutschen Fachjournalisten-Verbands (DFJV).

Foto: Andreas Unger

Foto: Andreas Unger

Bernd Oswald ist freier Journalist für mit den Schwerpunkten Medien und Netzwelt. Er ist freier Mitarbeiter bei BR24, dem trimedialen Nachrichtenangebot des Bayerischen Rundfunks, wo er sich auf Fact-Checking und Verifikation spezialisiert hat. Darüber hinaus arbeitet Oswald als Trainer für digitalen Journalismus. Er bietet vor allem Seminare zu Online-Recherche, Schreiben fürs Netz und Datenjournalismus an. Über neue Trends im digitalen Journalismus bloggt er auf er auf journalisten-training.de und twittert als @berndoswald. Kürzlich ist sein Lehrbuch „Digitaler Journalismus. Eine Gebrauchsanweisung“ auch als E-Book erschienen.

Schreiben Sie einen Kommentar (bitte beachten Sie hierbei unsere Netiquette)