Не удаётся получить значение аттрибута с помощью HtmlAgilityPack
Я хочу извлечь данные с этого сайта -> https://www.onlinecarparts.co.uk/car-brands/spare-parts-vw/1500-1600-31/1681.html
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
public class AutoPart
{
public string ImageUrl { get; set; }
public string Name { get; set; }
public string Link { get; set; }
}
public class Node
{
public string ImageUrl { get; set; }
public string Name { get; set; }
public List<AutoPart> Parts { get; set; }
}
public class Program
{
static async Task Main(string[] args)
{
var url = "https://www.onlinecarparts.co.uk/car-brands/spare-parts-vw/1500-1600-31/1681.html"; // вкажіть URL вашої сторінки
var web = new HtmlWeb();
var doc = await web.LoadFromWebAsync(url);
var nodes = new List<Node>();
var nodeElements = doc.DocumentNode.SelectNodes("//div[contains(@class, 'col-6 col-sm-4 col-md-4 col-lg-3 col-xl-2')]");
if (nodeElements != null)
{
foreach (var nodeElement in nodeElements)
{
var node = new Node
{
ImageUrl = nodeElement.SelectSingleNode(".//div[@class='catalog-grid-item__image']/img")?.GetAttributeValue("src", ""),
Name = nodeElement.SelectSingleNode(".//div[@class='catalog-grid-item__name']/span")?.InnerText,
Parts = new List<AutoPart>()
};
var partElements = nodeElement.SelectNodes(".//div[contains(@class, 'row')]//div[contains(@class, 'col-12 col-sm-6 col-lg-4 col-xxl-3')]");
if (partElements != null)
{
foreach (var partElement in partElements)
{
var part = new AutoPart
{
ImageUrl = partElement.SelectSingleNode(".//span[@class='catalog-subcats__image']/img")?.GetAttributeValue("src", ""),
Name = partElement.SelectSingleNode(".//span[@class='catalog-subcats__name']")?.InnerText
};
var linkNode = partElement.SelectSingleNode(".//a[@href]");
if (linkNode != null)
{
part.Link = linkNode.GetAttributeValue("href", "");
}
else
{
var spanNode = partElement.SelectSingleNode(".//span[@data-link]");
if (spanNode != null)
{
part.Link = spanNode.GetAttributeValue("data-link", "");
}
}
node.Parts.Add(part);
}
}
nodes.Add(node);
}
foreach (var node in nodes)
{
Console.WriteLine($"Node: {node.Name}, Image: {node.ImageUrl}");
foreach (var part in node.Parts)
{
Console.WriteLine($"\tPart: {part.Name}, Image: {part.ImageUrl}, Link: {part.Link}");
}
}
}
}
}
Он содержит узлы автомобиля и подробную информацию об этих узлах.
Выводит каждую деталь, но проблема с теми ссылками, которые мне нужны, если ссылка в href, то проблем нет, а если ссылка в <span data-link="...">
, то ссылка не выводится.