{"id":14174,"date":"2020-03-08T02:43:16","date_gmt":"2020-03-08T01:43:16","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=14174"},"modified":"2023-06-29T10:59:23","modified_gmt":"2023-06-29T08:59:23","slug":"wie-koennen-mit-java-automatisch-webseiten-mit-jsoup-am-beispiel-corona-abgefragt-werden","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=14174","title":{"rendered":"Wie k\u00f6nnen mit Java automatisch Webseiten mit Jsoup am Beispiel Corona abgefragt werden?"},"content":{"rendered":"<p>Das Robert Koch Institut (RKI) liefert f\u00fcr Deutschland aktuelle Corona-Fall-Zahlen auf dieser Webseite:<\/p>\n<p>https:\/\/www.rki.de\/DE\/Content\/InfAZ\/N\/Neuartiges_Coronavirus\/Fallzahlen.html<\/p>\n<p>in einer sch\u00f6nen Tabelle die wir mit Jsoup abfragen wollen.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-corona.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-corona.png\" alt=\"Robert Koch Institut - Corona in Deutschland\" width=\"2880\" height=\"2322\" class=\"alignnone size-full wp-image-14175\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-corona.png 2880w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-corona-300x242.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-corona-1024x826.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-corona-768x619.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-corona-1536x1238.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-corona-2048x1651.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Wir schauen uns erst einmal die Stuktur der Seite an. D.h. wir markieren z.B. Niedersachsen und \u00f6ffnen das rechte Kontexmen\u00fc und klicken auf &#8222;Element untersuchen&#8220;. 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\u00fcssen wir f\u00fcr die Analyse wissen.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki.png\" alt=\"\" width=\"2922\" height=\"2164\" class=\"alignnone size-full wp-image-14184\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki.png 2922w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-300x222.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-1024x758.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-768x569.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-1536x1138.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/rki-2048x1517.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Hier nun der kommentierte Beispiel-Code:<!--more--><\/p>\n<pre class=\"lang:java decode:true \">package de.wenzlaff.corona;\r\n\r\nimport java.io.IOException;\r\n\r\nimport org.jsoup.Jsoup;\r\nimport org.jsoup.nodes.Document;\r\nimport org.jsoup.nodes.Element;\r\nimport org.jsoup.select.Elements;\r\n\r\n\/**\r\n * Beispiel Abfrage Coronavirus vom RKI.\r\n * \r\n * COVID-19: Fallzahlen in Deutschland\r\n * \r\n * https:\/\/www.rki.de\/DE\/Content\/InfAZ\/N\/Neuartiges_Coronavirus\/Fallzahlen.html\r\n * \r\n * @author Thomas Wenzlaff\r\n *\/\r\npublic class RkiCoronaFallzahlenDeutschland {\r\n\r\n\t\/** URL des RKI. *\/\r\n\tprivate static final String URL = \"https:\/\/www.rki.de\/DE\/Content\/InfAZ\/N\/Neuartiges_Coronavirus\/Fallzahlen.html\";\r\n\r\n\t\/**\r\n\t * Start der Abfrage.\r\n\t * \r\n\t * @param args keine\r\n\t * @throws IOException bei Lesefehler.\r\n\t *\/\r\n\tpublic static void main(String[] args) throws IOException {\r\n\r\n\t\tDocument doc = Jsoup.connect(URL).get(); \/\/ hole die ganze Seite aus dem Internet vom RKI\r\n\r\n\t\tElement tabelle = doc.select(\"table\").get(0); \/\/ das ist die erste Tabelle auf der Seite\r\n\t\tElements zeilen = tabelle.select(\"tr\"); \/\/ selektieren aller Zeilen\r\n\r\n\t\tfor (Element zeile : zeilen) { \/\/ jede Zeile bearbeiten\r\n\t\t\tElements eintrag = zeile.select(\"td\"); \/\/ hole die erste Zeile der Tabelle\r\n\r\n\t\t\tif (!eintrag.isEmpty()) { \/\/ die Tabelle hat eine Leerzeile am Anfang, die \u00fcberspringen wir\r\n\r\n\t\t\t\tString bundesland = eintrag.get(0).text(); \/\/ das Bundesland holen, das ist der erste Eintrag in der ersten Spalte\r\n\t\t\t\tString f\u00e4lle = eintrag.get(1).text(); \/\/ die Anzahl der F\u00e4lle holen, das ist der Eintrag in der zweiten Spalte\r\n\r\n\t\t\t\tSystem.out.println(bundesland + \", \" + f\u00e4lle); \/\/ Ausgabe im CSV-Format: Bundesland , F\u00e4lle\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n<\/pre>\n<p>Wennn wir das Programm starten, erhalten wir heute (8.3.2020) diese Ausgabe:<\/p>\n<p>Baden-W\u00fcrttemberg, 182<br \/>\nBayern, 148<br \/>\nBerlin, 28<br \/>\nBrandenburg, 2<br \/>\nBremen, 4<br \/>\nHamburg, 13<br \/>\nHessen, 17<br \/>\nMecklenburg-Vorpommern, 7<br \/>\n<strong>Niedersachsen, 21<\/strong><br \/>\nNordrhein-Westfalen, 392<br \/>\nRheinland-Pfalz, 15<br \/>\nSaarland, 4<br \/>\nSachsen, 4<br \/>\nSchleswig Holstein, 8<br \/>\nTh\u00fcringen, 2<br \/>\n<strong>Gesamt, 847<\/strong><\/p>\n<p>Und nicht vergessen:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1.png\" alt=\"\" width=\"1536\" height=\"1119\" class=\"alignnone size-full wp-image-14169\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1-300x219.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1-1024x746.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1-768x560.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Robert Koch Institut (RKI) liefert f\u00fcr Deutschland aktuelle Corona-Fall-Zahlen auf dieser Webseite: https:\/\/www.rki.de\/DE\/Content\/InfAZ\/N\/Neuartiges_Coronavirus\/Fallzahlen.html in einer sch\u00f6nen 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 \u00f6ffnen das rechte Kontexmen\u00fc und klicken auf &#8222;Element untersuchen&#8220;. Nun wird unten der HTML-Quelltext angezeigt. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=14174\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eWie k\u00f6nnen mit Java automatisch Webseiten mit Jsoup am Beispiel Corona abgefragt werden?\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,3897,79,2713,7],"tags":[1217,3594,3925,3932,2178,2577,3931],"class_list":["post-14174","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java-programmierung","category-programmierung","category-statistik","category-tools","tag-abfragen","tag-auswerten","tag-corona","tag-hatml","tag-java","tag-jsoup","tag-webseite-abfragen"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/14174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14174"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/14174\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14174"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}