HTML Agility Pack Parsing

asp.net-mvc html html-agility-pack

Pregunta

Soy muy nuevo en HTML Agility Pack. Estoy tratando de encontrar algo de documentación pero teniendo algunos problemas.

Tengo el siguiente código:

<div class="person">
<a href="blah1.html">Person 1</a>
</div>
<div class="person">
<a href="blah2.html">Person 2</a>
</div>
<div class="person">
<a href="blah3.html">Person 3</a>
</div>
<div class="person">
<a href="blah4.html">Person 4</a>
</div>

Usando el analizador, ¿cómo puedo capturar solo los enlaces dentro de un div que tiene una persona de clase?

¡Gracias!

Respuesta aceptada

Con Html Agility Pack (disponible en NuGet):

HtmlDocument html = new HtmlDocument();
html.Load(path_to_html); // or html.LoadHtml(html_string)           
var links = html.DocumentNode.SelectNodes("//div[@class='person']/a")
                .Select(n => n.GetAttributeValue("href", null));

Devoluciones:

"blah1.html"
"blah2.html"
"blah3.html"
"blah4.html"

Respuesta popular

El siguiente XPath corresponde a su descripción:

//div[@class='person']/a/@href

Se devolverá los href atributos de los primeros a elementos que residen directamente bajo cualquier div elemento con el class de atributo que es igual a person .

Si se siente más cómodo con los selectores de estilo jQuery, eche un vistazo a usar CsQuery en lugar del paquete de agilidad HTML.



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é