从img style =“background:url('path')中提取图像,但不从src中提取图像

时间:2012-07-20 09:14:25

标签: c# html c#-4.0 html-parsing

如何在图像标签中提取使用style属性给出的背景图像。 在上面的标签中,我想从样式属性中提取图像,但不是从src中提取图像。我希望提取图像,但不是图像的路径。

4 个答案:

答案 0 :(得分:0)

试试这个

var imageUrl = document.getElementById('myImage').style.background.image.url;

答案 1 :(得分:0)

您可以使用HTML Agility pack和:

var images = doc.DocumentNode.Descendants("img").Where(d => d.Attributes.Contains("style") && d.Attributes["style"].Value.Contains("background:url")).ToList();

将返回包含所有图像的HtmlAgilityPack<HtmlNode>类型列表,然后您可以枚举它们获取值。

答案 2 :(得分:0)

如果您正在进行任何复杂的html解析,HTML Agility Pack是一个很好的解决方案。

但是,如果这就是你想要的,那么一个简单的正则表达式就可以解决这个问题。

如果您使用css标签,图片或背景图片设置了图像,则可以搜索网址并提取完整路径。

这个非常简单的正则表达式就是这样做的。

url\(.*?\)

在此之后,仅从完整路径中提取图像路径应该是微不足道的。

答案 3 :(得分:-1)

使用 HTML Agility Pack

进行xpathing后,你也可以使用简单的正则表达式解决这个问题
style=background:url\('(?<bgpath>.*)'\)

这是一个示例代码

static void Main(string[] args)
{
    string innerHTML = "<img style=\"background:url('images/logo.jpg')\" />";

    string regex = @"style=""background:url\('(?<bgpath>.*)'\)\""";
    RegexOptions options = ((RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline) | RegexOptions.IgnoreCase);
    Regex reg = new Regex(regex, options);
    if (reg.IsMatch(innerHTML))
    {
        Console.WriteLine(reg.Match(innerHTML).Groups["bgpath"].Value);
    }

    Console.ReadLine();
}