Seleccione elementos con atributo de url de datos utilizando HTMLAgilityPack

.net c# html-agility-pack

Pregunta

Estoy escribiendo un pequeño Download-Roboter, que está buscando enlaces en las capas inferiores por sí mismo.

Lo que necesito encontrar son todos los enlaces en una página html (los enlaces a archivos .jpg así como los enlaces a .pgn, .pdf, .html, .... - archivos)

Estoy usando el paquete html-agility para encontrar todos los enlaces a-href.

Código de muestra:

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

Pero también quiero encontrar los urls de datos.

¿Qué XPath-sintaxis tengo que usar para encontrar urls de datos? Un ejemplo de url de datos en un código html:

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

Necesito el "2012 \ edmonton \ partien.pgn" de este ejemplo. ¿Cómo puedo darme cuenta de esto con la sintaxis XPath?

Mejores saludos, si he cometido algunos errores, dímelo. Esta es mi primera pregunta.

Respuesta aceptada

Lo siguiente debe hacer lo que quieras:

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

Efectivamente, la declaración //div[@data-url] debería seleccionar todos los nodos con un atributo data-url. Entonces sacamos este atributo.

Si hay nodos distintos de divs con este atributo, entonces //*[@data-url] debería hacer el truco.



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow