private static void GetWikipedia(String Adresse = "https://de.wikipedia.org/wiki/Liste_der_UN-Nummern") { HttpWebRequest newRequest = (HttpWebRequest)WebRequest.Create(Adresse); newRequest.Method = "POST"; HttpWebResponse resp = (HttpWebResponse)newRequest.GetResponse(); StreamReader StrReader = new StreamReader(resp.GetResponseStream()); String Content = StrReader.ReadToEnd(); String[] TabellenRoh = Content.Split(new String[] { "<table class=\"prettytable\">", "</table>" }, StringSplitOptions.RemoveEmptyEntries); List <string> Tabellen = new List <string>(); foreach (String str in TabellenRoh) { if (str.Contains("<td>")) { Tabellen.Add(str); } } List <string> newData = new List <string>(); foreach (String str in Tabellen) { List <string> Zeilen = str.Split(new String[] { "<tr>", "</tr>\\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); foreach (string Zeile in Zeilen) { if (!Zeile.Contains("<td>")) { continue; } List <string> Teile = Zeile.Replace("\n", "").Split(new String[] { "<td>", "</td>" }, StringSplitOptions.RemoveEmptyEntries).ToList(); Teile.Insert(1, ""); if (Teile[0].Contains('+') || Teile[0].Contains('–') || Teile[0].Contains('-')) { Teile[1] = Teile[0].Split(new char[] { '+', '–', '-' })[1].Trim(); Teile[0] = Teile[0].Split(new char[] { '+', '–', '-' })[0].Trim(); } else { Teile[1] = Teile[0]; } newData.Add(DeHTML(Teile[0] + ";" + Teile[1] + ";" + Teile[2] + ";" + Teile[3] + ";" + Teile[4])); } } File.WriteAllLines("Daten.csv", newData, Encoding.UTF8); }
private void GetWikipedia(String Adresse = "https://de.wikipedia.org/wiki/Liste_der_UN-Nummern") //Runterladen der aktuellen Infos von Wikipedia und Export als CSV-datei { HttpWebRequest newRequest = (HttpWebRequest)WebRequest.Create(Adresse); newRequest.Method = "POST"; HttpWebResponse resp = (HttpWebResponse)newRequest.GetResponse(); StreamReader StrReader = new StreamReader(resp.GetResponseStream()); //Lauter Http-zeugs, um eine Anfrage zu stellen. String Content = StrReader.ReadToEnd(); //Im Wesentlichen bloß das Herunterladen des Quelltextes der angegebenen URL String[] TabellenRoh = Content.Split(new String[] { "<table class=\"prettytable\">", "</table>" }, StringSplitOptions.RemoveEmptyEntries); List <string> Tabellen = new List <string>(); //Im Folgenden werden die überflüssigen Bestandteile der Wikipedi-Seite entfernt. foreach (String str in TabellenRoh) //Hier Filterung nach den verschiedenen tabellen, die auf der Seite gezeigt sind { if (str.Contains("<td>")) //<td> ist der Tag für eine Tabellenzelle -> Ist eine tabelle; S. HTML-tags auf Wikipedia oder so { Tabellen.Add(str); } } List <string> newData = new List <string>(); foreach (String str in Tabellen) //Abarbeiten der einzelnen tabellen { List <string> Zeilen = str.Split(new String[] { "<tr>", "</tr>\\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); //Aufspalten in zeilen foreach (string Zeile in Zeilen) { if (!Zeile.Contains("<td>")) { continue; //Wenn in Zeilen Inhalte stehen -> keine Tabellenköpfe mit importieren } List <string> Teile = Zeile.Replace("\n", "").Split(new String[] { "<td>", "</td>" }, StringSplitOptions.RemoveEmptyEntries).ToList(); //Zeilenumbrüche (\n) entfernen und Zeile in die Infos aufteilen Teile.Insert(1, ""); //Der ganze Teil dient der Auftrennung der UN-Nummern, weil Wikipedia if (Teile[0].Contains('+') || Teile[0].Contains('–') || Teile[0].Contains('-')) //das so bescheuert mit 1-3 oder 1+2 angegeben hat. Deshalb trennung { //in untere und obere Nummern, wenn nur eine Nummer vorhanden dann wird die kopiert. Teile[1] = Teile[0].Split(new char[] { '+', '–', '-' })[1].Trim(); Teile[0] = Teile[0].Split(new char[] { '+', '–', '-' })[0].Trim(); } else { Teile[1] = Teile[0]; } newData.Add(DeHTML(Teile[0] + ";" + Teile[1] + ";" + Teile[2] + ";" + Teile[3] + ";" + Teile[4])); //Speichern der aktuellen zeile in einer Liste, vorher mit DeHTML() noch mal überarbeiten. Siehe DeHTML unten } } File.WriteAllLines("Daten.csv", newData, Encoding.UTF8); //fertige Liste als CSV abspeichern }