html-agility-pack извлекает фоновое изображение

html-agility-pack xpath

Вопрос

Как извлечь URL из следующего HTML.

то есть. экстракт:

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

из:

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

Принятый ответ

В XPath 1.0 в целом вы можете использовать комбинацию функций substring-after() и substring-before() для извлечения части текста. Но SelectNodes() и SelectSingleNode() HAP не могут возвращать, кроме узлов (узлов), поэтому эти функции XPath не помогут.

Один из возможных подходов состоит в том, чтобы получить все значение атрибута style с помощью XPath & HAP, а затем обработать значение дальше от .NET, используя regex, например:

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 Скриншот Демо

вывод :

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


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему