示例#1
0
        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
            });
        }
示例#3
0
 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
         });
     }
 }