HTML Agilty Packでイメージsrcを解析する

html-agility-pack xpath

質問

こんにちは、私は画像のsrcを取得するためにHTML Agilty PackでWebページを解析しようとしています。これがページの構造です。

<div class="post_body"> 
    <div style="text-align: center;"> 
        <a href="http://www.engadget.com/2012/02/29/qualcomm-windows-8/">
            <img src="http://www.blogcdn.com/www.engadget.com/media/2012/02/201202297192-1330536971.jpg" style="border-width: 0px; border-style: solid; margin: 4px;">
        </a>
    </div>
<div>

今私はこのコードを使ってsrcを取得しようとしています

HtmlWeb hw = new HtmlWeb();
            HtmlDocument doc = hw.Load("http://www.engadget.com/2012/02/29/qualcomm-windows-8");

            HtmlNode baseNode = doc.DocumentNode.SelectSingleNode("//div[@class='post_content permalink ']");
            string Description = baseNode.SelectSingleNode("//div[@class='post_body']").InnerText.Replace("\n", "").Replace("\r", "").Trim();

            string href = baseNode.SelectSingleNode("//div[@class='post_body']//img[@src]").InnerText;

ただし、文字列は常にnullが返されます:/

任意のアイデアかもしれないが、おそらく私は悪いxpath表現を持っている?

受け入れられた回答

任意のアイデアかもしれないが、おそらく私は悪いxpath表現を持っている?

はい、いくつかの問題があります:

//div[@class='post_content permalink ']

これは、指定されたドキュメントでclass属性を持つdivが存在しないため、値は'post_content permalink 'であるため、何も選択しません。

SelectSingleNode("//div[@class='post_body']//img[@src]").InnerText;  

img要素は、たとえそれが見つかったとしても、子要素を持たないため、 innerTextありません。

解決策

あなたはこのようなものが欲しい:

HtmlNode  img = doc.DocumentNode.SelectSingleNode(//div[@class='post_body']//img[@src])

String srcUrl = img.Attributes["src"].Value;



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ