Анализ через innerHTML с помощью HtmlAgilityPack

c# html-agility-pack selectsinglenode xpath

Вопрос

Просто пытаюсь выяснить, как анализировать информацию из уже разобранной информации.

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div [@class=\"result-link\"]"))
{
    if (node == null)
        Console.WriteLine("debug");
    else
    {
        //string h_url = node.Attributes["a"].Value;
        Console.WriteLine(node.InnerHtml);
    }
}

Поэтому вы можете видеть, что я пытаюсь сделать с объявлением 'string h_url'. В классе div «result-link» есть атрибут href, который я пытаюсь захватить значение href. Так что ссылка в основном.

Кажется, это не понятно. Я попытался использовать массив Attributes:

string h_url = node.Attributes["//a[@href].Value;

Без везения.

Принятый ответ

Вы можете использовать XPath для выбора элементов относительно текущего узла:

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//div[@class='result-link']");
if (nodes != null)
{
    foreach (HtmlNode node in nodes)
    {
        HtmlNode a = node.SelectSingleNode("a[@href]");
        if (a != null)
        {
            // use  a.Attributes["href"];
        }

        // etc...
    }
}


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему