예제 #1
0
        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);
        }
예제 #2
0
파일: GUI.cs 프로젝트: Yopiter/Stuff_Progs
        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
        }