html-agility-pack estrae un'immagine di sfondo

html-agility-pack xpath

Domanda

Come estrarre l'URL dal seguente codice HTML.

vale a dire. estratto:

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

a partire dal:

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

Risposta accettata

In XPath 1.0 in generale, è possibile utilizzare la combinazione delle funzioni substring-after() e substring-before() per estrarre parte di un testo. Ma i SelectNodes() e SelectSingleNode() HAP non possono restituire altro che i nodi, quindi quelle funzioni XPath non saranno di aiuto.

Un possibile approccio è quello di ottenere l'intero valore dell'attributo di style utilizzando XPath e HAP, quindi elaborare ulteriormente il valore da .NET, usando la regex ad esempio:

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

produzione :

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


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow