html-agility-packは背景イメージを抽出します

html-agility-pack xpath

質問

次のHTMLからどのようにURLを抽出しますか?

すなわち、エキス:

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>

受け入れられた回答

一般にXPath 1.0では、 substring-after()substring-before()関数を組み合わせてテキストの一部を抽出することができます。しかし、HAPのSelectSingleNode() SelectNodes()SelectSingleNode()はノード以外を返すことができないので、これらのXPath関数は役に立ちません。

可能なアプローチの1つは、XPathとHAPを使用してstyle属性の値全体を取得し、regexを使用して.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デモ

出力:

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


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow