Я пытаюсь создать веб-сканер, который должен извлекать все категории, подкатегории и продукты с веб-сайта. Существует пример кода, но я совершенно не понимаю, что с ним не так, поскольку робот не печатает никаких данных.
Не могли бы вы хотя бы указать, что не так в коде ??
Заранее спасибо за любую помощь :)
using System;
using System.Collections.Generic;
using System.Linq;
using HtmlAgilityPack;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace WebCrawler
{
class Program
{
static void Main(string[] args)
{
startCrawlerAsync();
Console.ReadLine();
}
private static async Task startCrawlerAsync() {
var url = "https://www.rockwool.pl/produkty/";
var httpClient = new HttpClient();
var html = await httpClient.GetStringAsync(url);
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);
// a list to add all the list of ROCKWOOL category products with all products
var productCategories = new List<ProductCategory>();
List<HtmlNode> productSections =
//htmlDocument.DocumentNode.Descendants("section")
// .Where(node => node.Equals("class").Equals("O90-product-list")).ToList();
htmlDocument.DocumentNode.Descendants("nav")
.Where(node => node.GetAttributeValue("class", "").Equals("O90-1-product-sublist__box")).ToList();
foreach (HtmlNode section in productSections)
{
List<HtmlNode> products = section.Descendants("li").ToList();
foreach(HtmlNode product in products)
{
string productName = product.InnerText;
}
// var catName = section.Descendants("h3").Single().GetAttributeValue()
ProductCategory productCategory = new ProductCategory
{
MainCategory = section.Descendants("h3").Single().InnerText,
SubCategory = section.Descendants("h3").Single().InnerText,
ProductName = section.Descendants("li").Single().InnerText,
ProductUrl = section.Descendants("a").FirstOrDefault().ChildAttributes("href").FirstOrDefault().Value
};
productCategories.Add(productCategory);
}
}
}
}
Я хочу извлечь каждую категорию продуктов с подкатегориями и продуктами с веб-сайта https://www.rockwool.pl/produkty/.
Например:
Ściany zewnętrzne -> Основная категория
Метод лекко мокра -> подкатегория
FRONTROCK 35 -> продукт
FASROCK LL -> товар
FRONTROCK MAX E -> product
Fasady Goylowane -> подкатегория
VENTI MAX -> товар
VENTI MAX F -> продукт
WENTIROCK -> товар
WENTIROCK F -> product