コード例 #1
0
        private void AddToBookPropertyValue(string[] keyValPairs, FoxeProduct product)
        {
            switch (keyValPairs[0])
            {
            case "Title":
                product.Title = keyValPairs[1].Trim();
                break;

            case "Author":
                product.Author = keyValPairs[1].Trim();
                break;

            case "Length":
                string pages = Regex.Match(keyValPairs[1].ToString().Trim(), @"\d+").Value;
                int    length;
                Int32.TryParse(pages, out length);
                product.Pages = length;
                break;

            case "Edition":
                string edition = Regex.Match(keyValPairs[1].ToString().Trim(), @"\d+").Value;
                int    ed;
                Int32.TryParse(edition, out ed);
                product.Edition = ed;
                break;

            case "Language":
                product.Language = keyValPairs[1].Trim();
                break;

            case "Publisher":
                product.Publisher = keyValPairs[1].Trim();
                break;

            case "Publication Date":
                DateTime publishedDate = new DateTime(1755, 1, 1);
                DateTime.TryParse(keyValPairs[1].ToString().Trim(), out publishedDate);
                product.PublishedDate = publishedDate;
                break;

            case "ISBN-10":
                product.ISBN_10 = keyValPairs[1].Trim();
                break;

            case "ISBN-13":
                product.ISBN_13 = keyValPairs[1].Trim();
                break;
            }
        }
コード例 #2
0
        public IList <FoxeProduct> ParseForProductsUnderCategory(HtmlDocument document, FoxeCategory category)
        {
            IList <FoxeProduct> products = new List <FoxeProduct>();

            HtmlNodeCollection productNodes = document.DocumentNode.SelectNodes("//div[@class='row book-top']");

            foreach (var productnode in productNodes)
            {
                FoxeProduct product = new FoxeProduct();
                product.CoverPageUrl = productnode.ChildNodes["div"].ChildNodes["img"].Attributes["src"].Value;
                var          productDetailsPageUrl     = CrawlerHelper.GetSchemeDomainUrl() + productnode.Descendants("a").Last().Attributes["href"].Value;
                HtmlDocument productDetailPageDocument = new WebClientManager().DownloadHtmlDocument(productDetailsPageUrl);
                ParseProductDetailPageUpdateProduct(productDetailPageDocument, product);
                product.Category = category;
                products.Add(product);
            }
            return(products);
        }
コード例 #3
0
 private void ParseProductDetailPageUpdateProduct(HtmlDocument document, FoxeProduct product)
 {
     try
     {
         var infoNodes = document.DocumentNode.SelectNodes("//ul[@class='list-unstyled']//li");
         product.Description = document.DocumentNode.SelectNodes("//div[@class='at-above-post']")[0].NextSibling.InnerHtml;
         foreach (var infoNode in infoNodes)
         {
             var keyValPairs = infoNode.InnerText.Split(':');
             AddToBookPropertyValue(keyValPairs, product);
         }
     }
     catch (ArgumentNullException)
     {
         //
     }
     catch (Exception e)
     {
         Console.WriteLine(e.ToString());
     }
 }
コード例 #4
0
 public FoxeProductTreeViewItem(FoxeProduct foxeProduct)
 {
     this.FoxeProduct = foxeProduct;
     this.Tag         = foxeProduct;
     CreatePageTreeViewItem();
 }