0

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

4

4 回答 4

0

您可以使用HTML 敏捷包和:

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

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

于 2012-07-20T09:17:28.160 回答
0

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

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

如果您使用 css 标签、image 或 background-image 设置了图像,您可以搜索 url 并提取完整路径。

这个非常简单的正则表达式可以做到这一点。

url\(.*?\)

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

于 2012-07-20T09:25:53.043 回答
0

尝试这个

var imageUrl = document.getElementById('myImage').style.background.image.url;
于 2012-07-20T09:17:08.273 回答
-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();
}
于 2012-07-20T09:54:21.787 回答