html-agility-pack提取背景图像

时间:2015-06-28 10:01:52

标签: xpath html-agility-pack

如何从以下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>

1 个答案:

答案 0 :(得分:3)

在XPath 1.0中,您可以使用substring-after()substring-before()函数的组合来提取文本的一部分。但是HAP的SelectNodes()SelectSingleNode()除了节点之外不能返回,所以那些XPath函数不会有帮助。

一种可能的方法是使用XPath&amp;获取style属性的整个值。 HAP,然后使用正则表达式从.NET进一步处理该值,例如:

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

输出

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