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.
Wir schauen uns erst einmal die Stuktur der Seite an. D.h. wir markieren z.B. Niedersachsen und öffnen das rechte Kontexmenü und klicken auf „Element untersuchen“. Nun wird unten der HTML-Quelltext angezeigt. Wir sehen das die Tabelle, an der ersten stelle steht, und mit den tr und td Tags erstellt ist. Das müssen wir für die Analyse wissen.
Hier nun der kommentierte Beispiel-Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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 (8.3.2020) diese Ausgabe:
Baden-Württemberg, 182
Bayern, 148
Berlin, 28
Brandenburg, 2
Bremen, 4
Hamburg, 13
Hessen, 17
Mecklenburg-Vorpommern, 7
Niedersachsen, 21
Nordrhein-Westfalen, 392
Rheinland-Pfalz, 15
Saarland, 4
Sachsen, 4
Schleswig Holstein, 8
Thüringen, 2
Gesamt, 847
Und nicht vergessen: