Analyse par innerHTML avec HtmlAgilityPack

c# html-agility-pack selectsinglenode xpath

Question

J'essaie juste de comprendre comment analyser des informations à partir d'informations déjà analysées.

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);
    }
}

Vous pouvez donc voir ce que j'essaie de faire avec la déclaration 'string h_url'. Dans la classe div "result-link", il y a un attribut href que j'essaie de saisir la valeur href. Donc, le lien essentiellement.

Je n'arrive pas à comprendre. J'ai essayé d'utiliser le tableau Attributes:

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

Sans chance.

Réponse acceptée

Vous pouvez utiliser XPath pour sélectionner des éléments relatifs au nœud actuel:

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...
    }
}


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi