【问题标题】:How to get value of nested img src with Html Agility Pack?如何使用 Html Agility Pack 获取嵌套 img src 的值?
【发布时间】:2021-09-19 22:24:25
【问题描述】:

我正在尝试使用 Html Agility 包获取嵌套的 img srcs,但我尝试了多种方法均未成功。基本上我需要抓取多个img src,都是嵌套的。其中有 17 个我需要抓住,但我一辈子都想不通。这是准系统 html,我需要最后一行 src 的值:

<div class="largeTitle">
    <article class="articleItem" data-id="0000">
       <a href="#blank_link"> class="img">
         <img class=" lazyloaded" data-src="#blank_link" alt="test" onerror="script" 
          src="image_link.jpg">
</a>
</article>

<article class="articleItem" data-id="0001">
       <a href="#blank_link"> class="img">
         <img class=" lazyloaded" data-src="#blank_link" alt="test" onerror="script" 
          src="image_link.jpg">
</a>
</article>
</div>

【问题讨论】:

    标签: c# html html-agility-pack


    【解决方案1】:

    使用你在cmets中提到的url,你可以这样做:

    var web = new HtmlWeb();
    var doc = web.Load("https://www.investing.com/");
    var images = doc.DocumentNode.SelectNodes("//*[contains(@class,'js-articles')]//a[@class='img']//img");
            
    foreach(var image in images)
    {
        string source = image.Attributes["data-src"].Value;
        string label = image.Attributes["alt"].Value;
        Console.WriteLine($"\"{label}\" {source}");
    }
    

    【讨论】:

    • 这肯定行得通,但是在 largeTitle div 之外获取东西,无论如何只能从该 div 中获取这些东西?
    • 您可以使用//div[contains(@class,'largeTitle')]//a[@class='img']/img,但该页面上的 largeTitle div 不止一个。
    • 您的解决方案实际上是完美的,我可以想出一些办法来解决这个问题。再次感谢!
    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多