【问题标题】:Only grab some innertext from a SelectNode with HtmlAgilityPack仅使用 HtmlAgilityPack 从 SelectNode 中获取一些内部文本
【发布时间】:2020-03-11 00:40:33
【问题描述】:

我一直在使用 HtmlAgilityPack 来解析网页中的一些 html。当前的 html 如下所示:

div class="price__child price__price flex-child__auto tooltip-container">
                                    <div class="price__min-order tooltip-container js-minOrder">
                                        <i>⚠️</i>
                                        <div class="price__min-order-tooltip tooltip">
                                            Minimum order of $15.00.
                                        </div>
                                    </div>

                                $1.75
                        </div>

我只想检索最后的价格文本,在本例中为$1.75。执行以下操作将返回该数字,以及较大 div 中的所有其他文本。

return node
                .SelectSingleNode(".//div[contains(@class, 'price__child price__price')]")
                .InnerText
                .Trim().Replace(" ", "")
                .TrimStart('$');

有没有办法从price__min-order tooltip-container js-minOrderprice__min-order-tooltip tooltip 中排除/不获取内部文本,而只从较大的div 中获取1.75

【问题讨论】:

    标签: c# .net html-agility-pack


    【解决方案1】:

    我找到了方法。如果您调用子节点并删除它,它将摆脱它。

    var priceNode = node
                    .SelectSingleNode(".//div[contains(@class, 'price__child price__price')]")
                    ?.ChildNodes[1];
                priceNode?.Remove();
    
                return node
                    .SelectSingleNode(".//div[contains(@class, 'price__child price__price')]")
                    .InnerText
                    .Trim().Replace(" ", "")
                    .TrimStart('$');
    

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      相关资源
      最近更新 更多