public LunchTable GetLunchTable() { var lunchTable = new LunchTable(); for(byte x = 1; x < 6; x++) { lunchTable.Days.Add(GetLunchDay(x)); } return lunchTable; }
static void Main(string[] args) { var lunchTable = new LunchTable(); using (var client = new WebClient()) { for (byte x = 1; x < 6; x++) { var page = client.DownloadString(SourceUrl + string.Format("?addGP[weekday]={0}", x)); var doc = new HtmlDocument(); doc.LoadHtml(page); var lunchDay = new LunchDay{ Date = doc.DocumentNode.SelectSingleNode(string.Format(DivClass, DateClass)).InnerText }; var offers = doc.DocumentNode.SelectNodes(string.Format(DivClass, OfferClass)); foreach(var offer in offers) { var menuDescriptions = offer.ChildNodes.Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("menu-description") ).ToList(); if (menuDescriptions.Count > 0) { lunchDay.Menus.Add(new Menu { Title = offer.ChildNodes.Single(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains (TitleClass)).InnerText.Trim(), Description = offer.ChildNodes.Single(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains( DescriptionClass)). InnerText.Replace("\n\n", ". ").Replace("\n", " ").Trim(), InternalPrice = float.Parse( offer.ChildNodes.Single(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains (DescriptionClass)). SelectNodes( string.Format(@"//span[@class=""{0}""]", PriceItemClass)) [0].InnerText.Replace( "INT", "").Trim()), ExternalPrice = float.Parse( offer.ChildNodes.Single(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains (DescriptionClass)). SelectNodes( string.Format(@"//span[@class=""{0}""]", PriceItemClass)) [1].InnerText.Replace( "EXT", "").Trim()) }); } } } } }