Sélectionner des éléments avec l'attribut data-url à l'aide de HTMLAgilityPack

.net c# html-agility-pack

Question

J'écris un petit Download-Roboter, qui cherche des liens dans les couches inférieures pour lui-même.

Ce que je dois trouver sont tous les liens dans une page HTML (les liens vers des fichiers .jpg ainsi que les liens vers .pgn, .pdf, .html, .... - fichiers)

J'utilise html-agilitypack pour trouver tous les liens a-href.

Exemple de code:

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

Mais je veux aussi trouver les URL de données.

Quelle syntaxe XPath dois-je utiliser pour trouver des URL de données? Un exemple d'URL de données dans un code HTML:

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

J'ai besoin de "2012 \ edmonton \ partien.pgn" dans cet exemple. Comment puis-je réaliser cela avec la syntaxe XPath?

Meilleures salutations, si j'ai fait de mauvaises erreurs, dites-le moi. Ceci est ma première question.

Réponse acceptée

Ce qui suit devrait faire ce que vous voulez:

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

En effet, l'instruction //div[@data-url] doit sélectionner tous les nœuds dotés d'un attribut data-url. Nous retirons ensuite cet attribut.

S'il existe des nœuds autres que divs avec cet attribut, alors //*[@data-url] devrait suffire.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi