Beispiel #1
0
 public int CompareTo(WinnerFirstVotesModel other)
 {
     return(Wahlkreis.CompareTo(other.Wahlkreis));
 }
Beispiel #2
0
        static void Main(string[] args)
        {
            string resultsUrl = "http://www.bundeswahlleiter.de/de/bundestagswahlen/BTW_BUND_09/ergebnisse/wahlkreisergebnisse/";

            string bundeslandPageContent = DownloadPage(resultsUrl);
            if (bundeslandPageContent == null)
            {
                Console.WriteLine("Bundesländer konnten nicht geladen werden. Abbruch.");
                return;
            }
            SimpleListItem[] bundeslandList = ParseSimpleList(bundeslandPageContent);

            List<Bundesland> bundeslaender = new List<Bundesland>();
            foreach(var curBundesland in bundeslandList)
            {
                Bundesland newBL = new Bundesland();
                newBL.Name = curBundesland.Name;
                newBL.Wahlkreise = new List<Wahlkreis>();
                string blUri = resultsUrl + curBundesland.Link;

                Console.WriteLine("Parse Bundesland " + curBundesland.Name + " ...");

                //Parse Wahlkreise
                string blWahlkreisePageContent = DownloadPage(blUri);
                if (blWahlkreisePageContent == null)
                {
                    Console.WriteLine("Wahlkreise konnten nicht geladen werden. Abbruch.");
                    return;
                }
                SimpleListItem[] blWahlkreiseList = ParseSimpleList(blWahlkreisePageContent);
                foreach (var curWahlkreis in blWahlkreiseList)
                {
                    Wahlkreis newWK = new Wahlkreis();

                    Match wkNameMatch = WahlkreisNameRegex.Match(curWahlkreis.Name);
                    if (wkNameMatch.Success)
                    {
                        newWK.Name = wkNameMatch.Groups["name"].Value;
                        newWK.Nr = int.Parse(wkNameMatch.Groups["nr"].Value);
                    }
                    else
                        newWK.Name = curWahlkreis.Name;

                    Console.WriteLine("  Parse Wahlkreis " + newWK.Name + " ...");

                    //Parse Ergebnisse
                    string wkErgebnisPageContent = DownloadPage(blUri + curWahlkreis.Link);
                    if (wkErgebnisPageContent == null)
                    {
                        Console.WriteLine("Wahlkreise-Ergebnis konnte nicht geladen werden. Abbruch.");
                        return;
                    }

                    var wkVotes = ParseVoteList(wkErgebnisPageContent);
                    newWK.Wahlberechtigte = wkVotes["Wahlberechtigte"]; wkVotes.Remove("Wahlberechtigte");
                    newWK.Waehler = wkVotes["Wähler"]; wkVotes.Remove("Wähler");
                    newWK.Ungueltige = wkVotes["Ungültige"]; wkVotes.Remove("Ungültige");
                    newWK.Gueltige = wkVotes["Gültige"]; wkVotes.Remove("Gültige");

                    newWK.Parteien = new List<Partei>();
                    foreach (var curPartei in wkVotes)
                    {
                        Partei newPartei = new Partei() { Id=GetParteiId(curPartei.Key), Ergebnis=curPartei.Value};
                        newWK.Parteien.Add(newPartei);
                    }

                    newBL.Wahlkreise.Add(newWK);
                }

                bundeslaender.Add(newBL);
            }

            //Write to CSV

            StreamWriter csvWriter = new StreamWriter("Ergebnisse2009.csv", false, Encoding.UTF8);

            csvWriter.WriteLine("Bundestagswahl 2009");
            csvWriter.WriteLine("Endgültig");

            csvWriter.Write("Nr,Gebiet,gehört,Wahlberechtigte,,,,Wähler,,,,Ungültige,,,,Gültige,,,,");
            foreach (string curPartei in ParteienDict.Keys)
                csvWriter.Write(curPartei + ",,,,");
            csvWriter.Write(Environment.NewLine);
            csvWriter.Write(",,zu,");
            for (int a = 1; a < CurParteienDictKey + 4; a++)
                csvWriter.Write("Erststimmen,,Zweitstimmen,,");
            csvWriter.Write(Environment.NewLine);
            csvWriter.Write(",,,");
            for (int a = 1; a < CurParteienDictKey + 4; a++)
                csvWriter.Write("Endgültig,,");

            int CurBundeslandId = 1;
            foreach (var curBL in bundeslaender)
            {
                foreach(var curWK in curBL.Wahlkreise)
                {
                    csvWriter.Write(curWK.Nr + ",");
                    csvWriter.Write("\"" + curWK.Name + "\",");
                    csvWriter.Write(CurBundeslandId + ",");

                    WriteVotes(csvWriter, curWK.Wahlberechtigte);
                    WriteVotes(csvWriter, curWK.Waehler);
                    WriteVotes(csvWriter, curWK.Ungueltige);
                    WriteVotes(csvWriter, curWK.Gueltige);

                    foreach (var curPartei in ParteienDict)
                    {
                        bool foundPartei = false;
                        foreach (var curWkPartei in curWK.Parteien)
                        {
                            if (curPartei.Value == curWkPartei.Id)
                            {
                                WriteVotes(csvWriter, curWkPartei.Ergebnis);
                                foundPartei = true;
                            }
                        }
                        if (!foundPartei)
                            csvWriter.Write(",,,,");
                    }
                    csvWriter.Write(Environment.NewLine);
                }

                csvWriter.Write(CurBundeslandId + ",");
                csvWriter.Write("\"" + curBL.Name + "\",");
                csvWriter.Write("99");
                csvWriter.Write(Environment.NewLine);
                csvWriter.Write(Environment.NewLine);

                CurBundeslandId++;
            }

            csvWriter.Write("99,\"Bundesgebiet\"");
            csvWriter.Write(Environment.NewLine);

            csvWriter.Close();

            Console.ReadLine();
        }