使用HTML Agility Pack解析图像src

时间:2012-02-29 21:05:05

标签: xpath html-agility-pack

您好我正在尝试使用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表达式?

1 个答案:

答案 0 :(得分:2)

  

任何想法可能我都有一个糟糕的xpath表达式?

是的,有一些问题:

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

这不会选择任何内容,因为在提供的文档中没有div class属性,其值为'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;