【问题标题】:How to access nested div based on class name如何根据类名访问嵌套的 div
【发布时间】:2016-11-06 07:52:30
【问题描述】:

我有这个 html 代码:

<div class="searchResult webResult">

  <div class="resultTitlePane">
    Google
  </div>

  <div class="resultDisplayUrlPane">
    www.google.com  
  </div>

 <div class="resultDescription">
   Search
 </div>
</div>

我想在不同变量的 div 中访问内部文本
我知道使用我应该编写的类访问 div

var titles = hd.DocumentNode.SelectNodes("//div[@class='searchResult webResult']"); 

foreach (HtmlNode node in titles)
    {?}

我应该写什么代码来获取不同变量中每次潜水的内部文本。TNX

【问题讨论】:

    标签: c# html css xpath


    【解决方案1】:

    我会扩展当前 XPath 表达式以匹配内部 div 元素:

    //div[@class='searchResult webResult']/div[contains(@class, 'result')]
    

    然后,要获取文本,请使用.InnerText 属性:

    【讨论】:

    • 是否可以在 foreach 块中使用if 来确定每个 div 的 tehir 类?
    • @mary 是的,您可以使用node.Attributes["class"] 获取class 属性值。
    【解决方案2】:

    由于不知道会返回多少个节点,我建议使用列表:

    List<string> titlesStringList = new List<string>();
    foreach (HtmlNode node in titles)
    {
        titlesStringList.Add(node.InnerText);
    }
    

    【讨论】:

    • TNX 我将使用列表。但titlesStringList.Add(node.InnerText); 只返回 div 的 innertext 之一。我可以使用 if 在不同的列表中分别获取每个 div 的内部文本吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多