c# - 仅使用 HtmlAgilityPack 从 SelectNode 中获取一些内部文本
问题描述
我一直在使用 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 中获取?
解决方案
我找到了方法。如果您调用子节点并删除,它将摆脱它。
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('$');
推荐阅读
- python - (Python) subprocess.run/Popen 卡在正在运行的命令行 exe 文件的空白窗口中
- java - 如何使用 .equals() 将字符串与同一行中的其他两个字符串进行比较
- vba - 本地化 PowerPoint 功能区控件中的文本
- java - 与 ACTION_SEND 共享多条消息
- c - 数字序列的问题。通过从当前数字中减去第一位数字来计算每个新数字
- laravel - 如何在 Laravel Passport 中测试密码授予令牌流程?
- python-3.x - 通过(大列表)键查找字典值的最有效方法?蟒蛇 3.8
- java - Android 10:RN4871 与应用程序作为外围设备的 BLE 配对问题
- reactjs - 如何拒绝 AWS Cognito 中某些用户的登录访问
- node.js - Typeorm 数据库已连接但不执行查询