HtmlAgilityPack Obtenir tous les liens dans une DIV

.net c# html-agility-pack xml xpath

Question

Je veux pouvoir obtenir 2 liens de l'intérieur d'une div.

Actuellement, je peux en choisir un, mais quand il y en a plus, il ne semble pas fonctionner

HtmlWeb web = new HtmlWeb();
        HtmlDocument doc = web.Load(url);

HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']");

            if (node != null)
            {
                foreach (HtmlNode type in node.SelectNodes("//a@href"))
                {
                    recipe.type += type.InnerText;
                }
            }
            else
                recipe.type = "Error fetching type.";

Essayer de l'obtenir à partir de ce morceau de HTML:

<div class="myclass">
<h3>Not Relevant Header</h3>
    <a href="#">This text</a>, 
    <a href="#">and this text</a>
</div>

Toute aide est appréciée, merci d'avance.

Réponse acceptée

var div = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']");
if(div!=null)
{
     var links = div.Descendants("a")
                    .Select(a => a.InnerText)
                    .ToList();
}

Réponse populaire

Utilisez cette XPath:

//div[@class = 'myclass']//a

Il saisit tous les éléments descendants d' a div dans class = 'myclass' avec class = 'myclass' .

Et //a@href est XPath incorrect.




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