Получить только внутренний текст из SelectNode с помощью HtmlAgilityPack - PullRequest
0 голосов
/ 11 марта 2020

Я использую 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-minOrder, а также price__min-order-tooltip tooltip, и только взять 1.75 из большего div?

1 Ответ

0 голосов
/ 11 марта 2020

Я нашел способ сделать это. Если вы вызовете дочерний узел и удалите его, он избавится от него.

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('$');
...