2012-02-29 63 views
2

嗨,所以我想解析一个网页与HTML Agilty包来获取图像的src。这是页面的结构。解析图像src与HTML Agilty包

<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表达式?

回答

2

任何想法也许我有一个糟糕的XPath表达式?

是的,有几个问题:

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

这将选择什么,因为提供的文件存在于心不是一个divclass属性,它的值是'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;