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; } }
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); }
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()); } }
public FoxeProductTreeViewItem(FoxeProduct foxeProduct) { this.FoxeProduct = foxeProduct; this.Tag = foxeProduct; CreatePageTreeViewItem(); }