Seleziona elementi con attributi data-url utilizzando HTMLAgilityPack

.net c# html-agility-pack

Domanda

Sto scrivendo un piccolo Download-Roboter, che cerca i collegamenti negli strati inferiori per se stesso.

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

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

Codice d'esempio:

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

Ma voglio trovare anche gli URL dei dati.

Che sintassi XPath devo usare per trovare i data-url. Un esempio di data-url in un codice html:

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

Ho bisogno del "2012 \ edmonton \ partitoen.pgn" di questo esempio. Come posso realizzare questo con la sintassi XPath?

I migliori saluti, se ho fatto dei brutti errori, dimmelo. Questa è la mia prima domanda in assoluto.

Risposta accettata

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 nodi diversi da div con questo attributo, //*[@data-url] dovrebbe fare il trucco.




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é