2012-07-10 13 views
5

Sto scrivendo un po 'Download-Roboter, che è alla ricerca di collegamenti in strati più bassi per lo stesso.Selezionare gli elementi con attributo data-url utilizzando HtmlAgilityPack

Cosa ho bisogno di trovare sono tutti i link in una pagina HTML (i link ai file .jpg, così come i collegamenti per .pgn, .pdf, .html, .... - file)

Sto usando il pacchetto html-agility per trovare tutti i link a-href.

codice di esempio:

foreach (HtmlNode link in htmlDocument.DocumentNode.SelectNodes("//a[@href]")) 
{ 
    HtmlAttribute attribute = link.Attributes["href"]; 
    links.Add(attribute.Value); 
} 

ma voglio trovare il data-urls pure.

Cosa XPath-sintassi devo usare per trovare data-URL. Un esempio di dati-url in una htmlCode:

<div class="cbreplay" data-url="2012\edmonton\partien.pgn"></div> 

ho bisogno del "2012 \ Edmonton \ partien.pgn" fuori da questo esempio. Come posso realizzare questo con la sintassi XPath?

migliori saluti, se ho fatto alcuni gravi errori, mi dicono. Questa è la mia prima domanda in assoluto.

risposta

11

Il seguente dovrebbe fare quello che vuoi:

foreach (HtmlNode divNode in htmlDocument.DocumentNode.SelectNodes("//div[@data-url]")) 
{ 
    HtmlAttribute attribute = divNode.Attributes["data-url"]; 
    links.Add(attribute.Value); 
} 

In effetti, la dichiarazione //div[@data-url] dovrebbe selezionare tutti i nodi con un attributo data-url. Quindi estraiamo questo attributo.

Se ci sono i nodi diversi da div con questo attributo, quindi //*[@data-url] dovrebbe fare il trucco.

+0

Grazie mille, la sua perfettamente funzionante. –

+2

potrebbe essere più flessibile usare '*' invece di 'div' -' "// * [@ data-url]" '. Quei maledetti autori di HTML continuano a cambiare il loro html! – user3791372

Problemi correlati