如何提取使用图像标签中的样式属性给出的背景图像。在上面的标签中,我想从样式属性中提取图像,而不是从 src 中提取图像。我想要提取图像,而不是图像的路径。
问问题
2784 次
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 回答