Wie können mit Java automatisch Webseiten mit Jsoup am Beispiel Corona abgefragt werden?

Erstellt am 8. März 2020 von It_berater

Das Robert Koch Institut (RKI) liefert für Deutschland aktuelle Corona-Fall-Zahlen auf dieser Webseite:

https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Fallzahlen.html

in einer schönen Tabelle die wir mit Jsoup abfragen wollen.

Hier nun der kommentierte Beispiel-Code:

package de.wenzlaff.corona;

import java.io.IOException;

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

/**
 * Beispiel Abfrage Coronavirus vom RKI.
 * 
 * COVID-19: Fallzahlen in Deutschland
 * 
 * https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Fallzahlen.html
 * 
 * @author Thomas Wenzlaff
 */
public class RkiCoronaFallzahlenDeutschland {

	/** URL des RKI. */
	private static final String URL = "https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Fallzahlen.html";

	/**
	 * Start der Abfrage.
	 * 
	 * @param args keine
	 * @throws IOException bei Lesefehler.
	 */
	public static void main(String[] args) throws IOException {

		Document doc = Jsoup.connect(URL).get(); // hole die ganze Seite aus dem Internet vom RKI

		Element tabelle = doc.select("table").get(0); // das ist die erste Tabelle auf der Seite
		Elements zeilen = tabelle.select("tr"); // selektieren aller Zeilen

		for (Element zeile : zeilen) { // jede Zeile bearbeiten
			Elements eintrag = zeile.select("td"); // hole die erste Zeile der Tabelle

			if (!eintrag.isEmpty()) { // die Tabelle hat eine Leerzeile am Anfang, die überspringen wir

				String bundesland = eintrag.get(0).text(); // das Bundesland holen, das ist der erste Eintrag in der ersten Spalte
				String fälle = eintrag.get(1).text(); // die Anzahl der Fälle holen, das ist der Eintrag in der zweiten Spalte

				System.out.println(bundesland + ", " + fälle); // Ausgabe im CSV-Format: Bundesland , Fälle
			}
		}
	}
}

Wennn wir das Programm starten, erhalten wir heute diese Ausgabe:

Baden-Württemberg, 116
Bayern, 117
Berlin, 24
Brandenburg, 2
Bremen, 4
Hamburg, 12
Hessen, 16
Mecklenburg-Vorpommern, 5
Niedersachsen, 19
Nordrhein-Westfalen, 346
Rheinland-Pfalz, 10
Saarland, 2
Sachsen, 2
Schleswig Holstein, 8
Thüringen, 1
Gesamt, 684

Und nicht vergessen:

Ähnliche Artikel:

  1. Java: Parsen von HTML-Dateien mit JSoup 1.9.2 in zwei Java Zeilen
  2. Java Einzeiler des Tages: Lesen einer Webseite mit jsoup den Open source HTML Parser
  3. Java Einzeiler: JSONvon URL einlesen mit org.apache.commons.io am Beispiel: Corona – COVID-19