使用HTML Agilty Pack解析圖像src

html-agility-pack xpath

嗨所以我試圖用HTML Agilty Pack解析一個網頁來獲取圖像的src。這是頁面的結構。

<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元素, 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合法嗎? 是的,了解原因