HtmlAgilityPack Obtenga todos los enlaces dentro de un DIV

.net c# html-agility-pack xml xpath

Pregunta

Quiero ser capaz de obtener 2 enlaces desde dentro de un div.

Actualmente puedo seleccionar uno, pero cuando hay más, parece que no funciona.

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.";

Tratando de obtenerlo de este pedazo de HTML:

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

Cualquier ayuda se agradece, gracias por adelantado.

Respuesta aceptada

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

Respuesta popular

Utilice este XPath:

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

Se agarra a todo descendiente a elementos div con class = 'myclass' .

Y //a@href es XPath incorrecto.



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué