private void LoadPlzenskyDvur() { HtmlNode doc = Utils.GetHtmlDoc(Constants.plzenskyDvur).DocumentNode; HtmlNode menu = doc.SelectSingleNode("//div[@class='listek']/div[@class='tyden']"); HtmlNodeCollection prices = doc.SelectNodes("//div[@class='listek']/div[@class='tyden_ceny']//td"); DayMenu ParseDay(HtmlNode title, HtmlNode text) { string dateStr = title.InnerText; DateTime date = Utils.ParseDateTime(dateStr.Split(' ')[1]); HtmlNodeCollection rows = text.SelectNodes("./p"); string soup = rows[0].InnerText; Food[] foods = rows .Where((_, index) => index > 0 && index % 2 == 0) .Zip(prices, (HtmlNode food, HtmlNode price) => new Food( HtmlEntity.DeEntitize(food.InnerText.Trim()), Utils.ParsePrice(price.InnerText.Split('-')[1].Trim(), ' ') )).ToArray(); return(new DayMenu(date, soup, foods)); } HtmlNodeCollection titles = menu.SelectNodes("./p[@class='title']"); HtmlNodeCollection texts = menu.SelectNodes("./div[@class='text']"); titles.Remove(0); texts.Remove(0); DayMenu[] dayMenus = titles.Zip(texts, ParseDay).ToArray(); string restaurantName = GetRestaurantName(doc); SaveRestaurant(restaurantName, dayMenus, Restaurants.PlzenskyDvur); }
public DatabaseObject ParseDatabaseObject(string content) { HtmlDocument DatabaseObjectDocument = new HtmlDocument(); DatabaseObjectDocument.LoadHtml(content); HtmlNode NameNode = DatabaseObjectDocument.DocumentNode.SelectSingleNode("//span[contains(@class,'releasestitle')]"); HtmlNodeCollection sCatNodes = DatabaseObjectDocument.DocumentNode.SelectNodes("//div[contains(@class,'sCat')]"), sContentNodes = DatabaseObjectDocument.DocumentNode.SelectNodes("//div[contains(@class,'sContent')]"); Dictionary <String, HtmlNode> ContentNodes = sCatNodes.Zip(sContentNodes, (sCategory, sContent) => new { Category = sCategory.FirstChild.InnerText, Content = sContent }).ToDictionary(item => item.Category, item => item.Content); HtmlNode AssociatedNamesNode = ContentNodes.FirstOrDefault(item => item.Key.Equals("Associated Names")).Value, CoverNode = ContentNodes.FirstOrDefault(item => item.Key.Equals("Image")).Value, YearNode = ContentNodes.FirstOrDefault(item => item.Key.Equals("Year")).Value; List <String> AssociatedNames = (from HtmlNode TextNode in AssociatedNamesNode.ChildNodes where TextNode.Name.Equals("#text") && !TextNode.InnerText.Trim().Equals(String.Empty) && !TextNode.InnerText.Trim().Equals("N/A") select HtmlEntity.DeEntitize(TextNode.InnerText.Trim())).ToList <String>(); List <LocationObject> Covers = new List <LocationObject>(); if (CoverNode != null && CoverNode.SelectSingleNode(".//img") != null) { Covers.Add(new LocationObject() { Url = CoverNode.SelectSingleNode(".//img").Attributes["src"].Value, ExtensionName = ExtensionDescriptionAttribute.Name, ExtensionLanguage = ExtensionDescriptionAttribute.Language }); } Match DatabaseObjectIdMatch = Regex.Match(content, @"id=(?<DatabaseObjectId>\d+)&"); Int32 DatabaseObjectId = Int32.Parse(DatabaseObjectIdMatch.Groups["DatabaseObjectId"].Value), ReleaseYear = 0; Int32.TryParse(YearNode.FirstChild.InnerText, out ReleaseYear); return(new DatabaseObject() { Name = HtmlEntity.DeEntitize(NameNode.InnerText), Covers = Covers, AlternateNames = AssociatedNames, Description = HtmlEntity.DeEntitize(ContentNodes.FirstOrDefault(item => item.Key.Equals("Description")).Value.InnerText.Trim()), Locations = { new LocationObject() { ExtensionName = ExtensionDescriptionAttribute.Name, ExtensionLanguage = ExtensionDescriptionAttribute.Language, Url = String.Format("{0}/series.html?id={1}", ExtensionDescriptionAttribute.RootUrl, DatabaseObjectId) } }, ReleaseYear = ReleaseYear }); }
public void addEntry(HtmlNodeCollection entries, HtmlNodeCollection tarihler) { foreach (var baslik in entries.Zip(tarihler, (n, p) => new { n, p })) { string[] date = baslik.p.InnerText.Split(' '); string iDate = date[6]; DateTime oDate = Convert.ToDateTime(iDate); List.Add(new Model() { entry = baslik.n.InnerText, dates = date[6], entry_date = oDate, success = true }); } }