Java: Internetseiten auslesen – Web Scraping mit jSoup
Posted: November 4th, 2013 | Filed under: Internet, Java, Programmieren, Tutorials | Tags: auslesen, crawlen, deutsches Tutorial, internetseiten, Java, jSoup, parsen, scraping, web | 2 Comments »Um Informationen aus einer Webseite heraus zu extrahieren (engl. web scraping), gibt es viele verschiedene Vorgehensweisen und Frameworks. Nach langer Suche bin ich endlich auf ein einfaches und gut dokumentiertes Framework gestoßen: jSoup
jSoup ist eine Java-Bibliothek mit der es möglich ist mittels CSS-Selektoren und dem Document Object Model (DOM), Seiteninhalte extrem einfach abzugreifen. Das folgende Beispiel erläutert die Funktionsweise des Frameworks und die Einfachheit der Handhabung.
Webseite analysieren
Ziel unseres Tutorial ist es, auf der Wikipedia Startseite die Ereignisse der “Was geschah am <aktuelles Datum>?”-Kategorie auszulesen.
Mit Hilfe der Debug-Konsole im Google Chrome Browser und dem Inspektor ist es möglich die HTML-Struktur zu genau zu analysieren. Unsere Informationen die wir abgreifen möchten befinden sich in einer Liste innerhalb des DIV mit der Id hauptseite-ereignisse.
Beispiel – Wikipedia parsen
Herunterladen könnt ihr die Java-Bibliothek jSoup hier: http://jsoup.org/download
Nachdem ihr die .jar-Datei jsoup-X.X.X.jar in euer Projekt eingebunden habt (so wird’s gemacht http://www.javabeginners.de/Grundlagen/Bibliothek_einbinden.php), könnt die das Framework wie folgt verwenden:
import java.io.IOException; |
Konsolenausgabe
Führt man das obige Quellcode-Stück aus, so wird unser gewünschter Inhalt zeilenweise wie folgt ausgegeben:
1813 – Der an der badischen Revolution von 1848/49 beteiligte Politiker Lorenz Brentano, nach deren Scheitern im US-Exil und dort 1877 bis 1879 Kongressabgeordneter, kommt zur Welt.
1913 – Am Königlichen Hoftheater Stuttgart wird Walter Braunfels’ Oper Ulenspiegel uraufgeführt.
1913 – Ein von Marseille kommender Schnellzug kollidiert bei Melun mit einem Postzug.
1988 – Die Uraufführung von Thomas Bernhards Drama Heldenplatz am Wiener Burgtheater löst einen Skandal aus.
Alternativen
- http://nrabinowitz.github.io/pjscrape (JavaScript)
- http://htmlunit.sourceforge.net (Java)
- http://scrapy.org (Python)
- https://github.com/fabpot/goutte (PHP)
- http://simplehtmldom.sourceforge.net (PHP)
- https://code.google.com/p/ganon (PHP)
Viel Spaß beim Auslesen!
Hallo Frank,
mich interessiert, was ich bei doc.select in die Klammer schreiben muss, um meinen Text unten (Lorem ipsum…) in Eclipse in der Console ausgegeben zu bekommen.
Ich bin für jede Hilfe dankbar.
Viele Grüße – Christian
aussagekräftiger Titel der Seite
Lorem ipsum dolor sit amet, consetetur sadipscing elitr…
Hallo Christian,
je nach dem wo der Text im HTML Dokument steht.
Falls er sich zum Beispiel direkt im BODY-Element befindet, wie bei dir, dann reicht es
doc.select(„body“);
zu schreiben…