c# - HtmlNode 从嵌套范围获取内部文本

标签 c# html linq html-agility-pack

我正在尝试从 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 查询哪里出了问题?

最佳答案

我认为您可以使用方法 GetDirectInnerText() 而不是属性 InnerText。对我来说,它仅返回节点本身的文本,没有子节点。

htmlNode.后代(“li”).Where(x => x.HasClass(“交易价格”)).Select(x => x.后代(“span”).Where( z => z.HasClass("value")).Last().GetDirectInnerText());

关于c# - HtmlNode 从嵌套范围获取内部文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58753466/

相关文章:

c# - 如何使用linq过滤SelectList

c# - LINQ 加入 2 个列表<T>

linq - 使用 Moq 进行单元测试有时会在 ToListAsync() 上失败

c# - 了解多线程和 EventWaitHandle

jquery animate 不适用于 css 定位

c# - 将 WPF DrawingGroup 呈现为单个 ImageSource

javascript - 如何制作一系列图形圆圈,以便我可以定期重绘到屏幕上?

javascript - 使用jquery点击图像按钮时控制音频播放器

c# - 如何将gridview绑定(bind)到另一个gridview?

C# 如何检查事件处理程序是否完成