0

image タグの style 属性を使用して指定された背景画像を抽出するにはどうすればよいですか。上記のタグでは、src からではなく style 属性から画像を抽出したいと考えています。画像を抽出したいのですが、画像のパスは抽出したくありません。

4

4 に答える 4

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 に答える
0

HTML Agility パックと以下を使用できます。

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 に答える
-1

HTML Agility Packを使用してxpathした後、この問題で単純な正規表現を使用することもできます

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 に答える