【问题标题】:Parse image src with HTML Agilty Pack使用 HTML Agility Pack 解析图像 src
【发布时间】:2012-02-29 21:05:04
【问题描述】:

您好,我正在尝试使用 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 html-agility-pack


    【解决方案1】:

    有什么想法可能是我的 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2014-07-13
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多