HtmlNode Получить внутренний текст из вложенного диапазона - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь получить информацию из сегмента html, все идет хорошо, но я пытаюсь вернуть значение Trade in. Ниже приведена копия кода, который я пробовал до сих пор.

htmlNode.Descendants("li").Where(x => x.HasClass("trade-in-price")).Select(x => x.Descendants("span").Where(z => z.HasClass("value")).Last().InnerText);

, который возвращает следующее:

"£36.00"

Теперь я не хочу вставлять это значение, чтобы получитьстоимость, так как я не думаю, что это лучший способ сделать это, однако я попробовал любой другой способ, и я не могу вернуть значение «только стоимость».

Вот копияhtml Я пытаюсь перейти, чтобы получить желаемое значение

            <section
                class="product-item"
                itemscope="itemscope">
                <div>
                    <div class="group">
                        <div>
                            <div class="product-image"><a
                                href="/trade-in-sell/call-of-duty-modern-warfare-ps4"
                                itemprop="url"
                            ><span><img
                                width="160"
                                height="200"
                                alt="Call Of Duty: Modern Warfare"
                                title="Show more information on Call Of Duty: Modern Warfare"
                                itemprop="image"
                            /></span></a></div>
                            <div class="product-categories gray">
                                <ul>
                                    <li>PlayStation</li>
                                </ul>
                            </div>
                            <div class="product-label top-seller"><strong>modernwarfare</strong></div>
                            <h2 class="product-title" itemprop="name">Call Of Duty: Modern Warfare</h2>
                        </div>
                    </div>
                    <div class="group">
                        <div>
                            <div class="product-price">
                                <ul>
                                    <li class="buy-new-price">
                                        <Buy new</span> <span class="value"><span class="symbol l">&pound;</span>49.99</span>
                                    </li>
                                    <li class="trade-in-price">
                                        <a href="/trade-in-sell/call-of-duty-modern-warfare-ps4">
                                            <span class="label">Trade in</span> 
                                            <span class="value">
                                                <span class="symbol l">
                                                    &pound;
                                                </span>
                                                36.00   // I want this value here
                                            </span>
                                        </a>
                                    </li>
                                    <li class="sell-price">
                                        <a href="/trade-in-sell/call-of-duty-modern-warfare-ps4">
                                            <span class="label">Get cash</span> 
                                            <span class="value">
                                                <span class="symbol l">
                                                    &pound;
                                                </span>
                                                32.00
                                            </span>
                                        </a>
                                    </li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </section>

Кто-нибудь знает, где я ошибаюсь в своем запросе LINQ?

1 Ответ

1 голос
/ 07 ноября 2019

Я думаю, вы можете использовать метод GetDirectInnerText() вместо свойства InnerText. Для меня это возвращает только текст самого узла без дочерних элементов.

htmlNode.Descendants("li").Where(x => x.HasClass("trade-in-price")).Select(x => x.Descendants("span").Where(z => z.HasClass("value")).Last().GetDirectInnerText());

...