html-agility-pack extraer una imagen de fondo

html-agility-pack xpath

Pregunta

¿Cómo puedo extraer la url del siguiente HTML.

es decir. extraer:

http://media.somesite.com.au/img-101x76.jpg

de:

<div class="media-img">
    <div class=" searched-img" style="background-image: url(http://media.somesite.com.au/img-101x76.jpg);"></div>
</div>

Respuesta aceptada

En XPath 1.0 en general, puede usar la combinación de las funciones substring-after() y substring-before() para extraer parte de un texto. Pero los SelectNodes() y SelectSingleNode() HAP no pueden devolver más que los nodos, por lo que esas funciones XPath no ayudarán.

Un posible enfoque es obtener el valor completo del atributo de style usando XPath y HAP, luego procesar el valor más lejos de .NET, usando expresiones regulares por ejemplo:

var html = @"<div class='media-img'>
    <div class=' searched-img' style='background-image: url(http://media.somesite.com.au/img-101x76.jpg);'></div>
</div>";
var doc = new HtmlDocument();
doc.LoadHtml(html);
var div = doc.DocumentNode.SelectSingleNode("//div[contains(@class,'searched-img')]");
var url = Regex.Match(div.GetAttributeValue("style", ""), @"(?<=url\()(.*)(?=\))").Groups[1].Value;
Console.WriteLine(url);

.NET Fiddle Demo

salida:

http://media.somesite.com.au/img-101x76.jpg


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué