using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Net; using System.IO; namespace MensaPlan { class Program { static HttpWebRequest m_WebRequest; static CookieContainer m_Cookies = new CookieContainer(); static void Main(string[] args) { const string foodExp = "(.)+<td class=\"borderb\">(?(.)+)  </td>"; const string URL = "http://www.studierendenwerk-koblenz.de/speiseplan.php"; string page = string.Empty; page = LoadURL(URL); if (page.Equals(string.Empty)) { Environment.Exit(1); } page = page.Replace(">", ">"); // will weder > page = page.Replace("<", "<"); // noch < parsen :( Regex regex = new Regex(foodExp); MatchCollection matches = regex.Matches(page); if (matches.Count != 10) { Console.WriteLine("Fehlerhafte Anzahl an Einträgen"); Environment.Exit(1); } int dow; switch (DateTime.Now.DayOfWeek) { case DayOfWeek.Monday: dow = 0; break; case DayOfWeek.Tuesday: dow = 1; break; case DayOfWeek.Wednesday: dow = 2; break; case DayOfWeek.Thursday: dow = 3; break; case DayOfWeek.Friday: dow = 4; break; default: dow = 0; Console.WriteLine("Heute gibts nix"); Environment.Exit(1); break; } if (matches[dow].Success && matches[dow + 5].Success) { Console.WriteLine("Ausgabe 1: " + matches[dow].Groups["FOOD"].Value); Console.WriteLine("Ausgabe 2: " + matches[dow + 5].Groups["FOOD"].Value); } } public static string LoadURL(string url) { HttpWebResponse response = null; Stream dataStream = null; StreamReader reader = null; string resp = string.Empty; try { m_WebRequest = (HttpWebRequest)WebRequest.Create(url); m_WebRequest.UserAgent = "Agent Smith"; m_WebRequest.CookieContainer = m_Cookies; response = (HttpWebResponse)m_WebRequest.GetResponse(); dataStream = response.GetResponseStream(); reader = new StreamReader(dataStream); resp = reader.ReadToEnd(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); Console.WriteLine("URL : " + url); System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); System.Diagnostics.StackFrame sf = st.GetFrame(1); Console.WriteLine("Methode : " + sf.GetMethod().Name + "()"); } finally { if (reader != null) reader.Close(); if (dataStream != null) dataStream.Close(); if (response != null) response.Close(); } return resp; } } }