Analisi del pacchetto agilità HTML

asp.net-mvc html html-agility-pack

Domanda

Sono molto nuovo in HTML Agility Pack. Sto cercando di trovare della documentazione ma ho alcuni problemi.

Ho il codice seguente:

<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 il parser, come posso prendere solo i link all'interno di un div che ha una persona di classe?

Grazie!

Risposta accettata

Con Html Agility Pack (disponibile su 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));

Ritorna:

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

Risposta popolare

Il seguente XPath corrisponde alla tua descrizione:

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

Restituirà gli attributi href del primo a elementi che risiedono direttamente sotto qualsiasi elemento div con l'attributo class uguale alla person .

Se sei più a tuo agio con i selettori di stile jQuery, dai un'occhiata a CsQuery invece di HTML Agility Pack.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché