You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用HTML Agility Pack提取HTML中的指定数值18.2099?

解决HTML Agility Pack提取标签内容的问题

问题根源

你代码里的XPath查询用了dbo,但目标HTML里的标签是<bdo>——纯粹是拼写错误,这才导致节点查询返回null。

修正后的代码

把XPath里的dbo改成bdo,同时加上空节点判断避免空引用异常:

var htmlText = await response.Content.ReadAsStringAsync(cancellationToken);

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlText);

// 修正拼写错误:dbo → bdo
var htmlNode = htmlDoc.DocumentNode.SelectSingleNode("//div[@class='last u-up']/bdo[@class='last-price-value']");
// 先判断节点是否存在,再解析内容
if (htmlNode != null && decimal.TryParse(htmlNode.InnerText.Trim(), out var value))
{
    return value;
}

// 处理节点不存在或解析失败的情况
return default; // 或者抛出异常、返回特定值

额外优化建议

如果目标元素的class可能存在多个值(比如顺序变化、新增其他class),用contains来匹配class更稳妥,避免严格匹配导致失败:

var htmlNode = htmlDoc.DocumentNode.SelectSingleNode("//div[contains(@class, 'last u-up')]/bdo[contains(@class, 'last-price-value')]");

另外解析decimal时,建议指定文化信息(比如针对英文小数点格式),避免因系统区域设置导致解析失败:

if (htmlNode != null && decimal.TryParse(htmlNode.InnerText.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture, out var value))
{
    return value;
}

内容的提问来源于stack exchange,提问作者R4nc1d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:30:22