Java: Parsen von HTML-Dateien mit JSoup 1.9.2 in zwei Java Zeilen

Will man schnell und einfach HTML-Dateien parsen bzw. auswerten, geht das mit der schönen JSoup-Api.

Es sind dann nur zwei Zeilen nötig um z.B. den Titel einer Webseite einzulesen:

Document doc = Jsoup.connect("http://reise.wenzlaff.de/reisetabelle/").get();
System.out.println("Der Titel der Website: " + doc.title());

Hier mal ein Zitat aus der Orginal Api-Beschreibung:

jsoup is a Java library for working with real-world HTML. 
It provides a very convenient API for extracting and manipulating data, 
using the best of DOM, CSS, and jquery-like methods.

jsoup implements the WHATWG HTML specification, 
and parses HTML to the same DOM as modern browsers do.

    parse HTML from a URL, file, or string
    find and extract data, using DOM traversal or CSS selectors
    manipulate the HTML elements, attributes, and text
    clean user-submitted content against a safe white-list, to prevent XSS
    output tidy HTML

jsoup is designed to deal with all varieties of HTML found in the wild; 
from pristine and validating, 
to invalid tag-soup; j
soup will create a sensible parse tree.

Das sind doch Gründe!

Es braucht in der pom.xml des Maven Projekte nur diese eine Abhängigkeit angegeben zu werden:

<dependency>		
		  <groupId>org.jsoup</groupId>
		  <artifactId>jsoup</artifactId>
		  <version>1.9.2</version>
</dependency>

Hier dann mal eine Beispiel-Klasse, die eine Tabelle mit Reiseinformationen mit den Orten wo ich war einfach auf der Konsole ausgibt:

package de.wenzlaff.mqtt.client;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

/**
 * Beispiel zum parsen von HTML Dateien mit JSoup.
 * 
 * In pom.xml die folgenden Abhängigkeit ergänzen:
 * 
 * <pre>
    <dependency>
		  <!-- jsoup HTML parser library @ http://jsoup.org/ -->
		  <groupId>org.jsoup</groupId>
		  <artifactId>jsoup</artifactId>
		  <version>1.9.2</version>
		</dependency>
 * </pre>
 * 
 * @author Thomas Wenzlaff
 * @version 0.1
 */
public class HtmlParser {

	/**
	 * Beispiel Programm
	 * 
	 * @param args
	 *            keine
	 * @throws Exception
	 *             bei Fehler.
	 */
	public static void main(String[] args) throws Exception {

		// laden einer Html Seite über eine URL
		Document doc = Jsoup.connect("http://reise.wenzlaff.de/reisetabelle/").get();

		// den Titel ausgeben
		System.out.println("Der Titel der Website: " + doc.title());

		// die ganze Seite als Html
		System.out.println("Wir geben mal die ganze Seite als Html aus:" + doc.html());

		// nur die Tabelle selektieren und als Html ausgeben
		Elements reiseTabelle = doc.select("#tablepress-12");
		System.out.println("Die ganze Reisetabelle als HTML: " + reiseTabelle);

		// nur die KM selektieren und in einer Zeile
		// getrennt durch leerzeichen ausgeben
		Elements alleKmAusTabelle = doc.select(".column-6");
		System.out.println("Alle km aus der Tabelle in einer Zeile: " + alleKmAusTabelle.text());

		// und alle Länder ohne Html Tags ausgeben
		Elements alleLaenderAusTabelle = doc.select(".column-2");
		System.out.println("Alle Länder aus der Tabelle ohne HTML Tags: " + alleLaenderAusTabelle.html());
	}
}

Das Ergebnis wenn dieses Beispielprogramm ausgeführt wird, ua.

Alle Länder aus der Tabelle ohne HTML Tags: Land, Ort
England, London
Frankreich, Paris
Spanien, Mallorca, Cala Rajada
Spanien, Teneriffa
Tunesien, Tunis
Griechenland, Kreta, Heraklion
Türkei, Antalya
Italien, Rom
Malediven, Male
Ägypten, Kairo
China, Hong Kong, Kowloon
Niederland, Amsterdam
Dominikanische Republik, Santo Domingo
Portugal, Algarve Albuferia
USA, Florida, Miami
Zypern, Limassol (Israel, Jerusalem; Ägypten, Kairo)
USA, Kalifornien, San Francisco
Griechenland, Athen
Indonesien, Bali (Singapur)
USA, New York
Malta, Valletta
Mauritius, Port Louis
Spanien, Madrid
Japan, Tokio
Bulgarien, Varna
Dubai, Ras Al-Khaimah
Spanien, Mallorca, Alcúdia
Thailand, Pattaya
Hawaii, Waikiki-Beach
Seyshellen, Mahe
Polen (Warschau, Danzig, Thorn ...)
Sri Lanka, Ceylon
Seyshellen, Mahe
Irland, Dublin
Schweden, Stockholm
Estland, Tallinn
Russland, St.-Petersburg
Daenemark, Kopenhagen
Türkei, Side
USA Karibik (Miami, Fort Lauderdale, Aruba, Curacao, Grenada, Barbados, St. Lucia, Antigua, St. Maarten, St. Thomas)
Italien, Sizilien (Catania, Taormina, Etna)
Vietnam, Saigon (Ho-Chi-Minh-Stadt) *
Kambodscha, Phnom Penh *
Thailand, Bangkok *
USA, Kalifornien, San Francisco * (nur Hinflug)
USA, Florida, Miami * (nur Rückflug)

Cool, weitere Beispiele sind auf der Homepage von Jsoup und hier zu finden.

Ähnliche Artikel:

  1. Anzahl der Flugzeuge mit 3 Zeilen Java Code ausgeben via REST API mit Jersey und JDom 2.0
  2. Fritzbox Telefonbuch (Phonebook) mit Java bearbeiten via JDom und SAXBuilder
  3. Twitter zugriff mit java-twitter

wallpaper-1019588
5 Dinge, die du als Trailrunning-Anfänger wissen solltest
wallpaper-1019588
Kalorienarme Lebensmittel: Top-Auswahl für Ihre Diät
wallpaper-1019588
Kalorienarme Lebensmittel: Top-Auswahl für Ihre Diät
wallpaper-1019588
#1492 [Review] Manga ~ Dein Verlangen gehört mir