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

如何使用Html Agility Pack解析包含多标签的HTML节点并提取内容

解决方案

直接使用Html Agility Pack内置的节点查询、属性提取方法即可完成需求,比正则更稳定不易出错,修改后的代码如下:

...
HtmlNodeCollection nodes = webContent.DocumentNode.SelectNodes("//*[@id='node-name']/ul/li");

foreach (HtmlNode node in nodes) {
    // 先定位当前li下的a标签
    HtmlNode aNode = node.SelectSingleNode(".//a");
    if (aNode == null) continue; // 容错处理,避免空节点报错
    
    String link = aNode.GetAttributeValue("href", string.Empty); // 提取href属性
    // 提取a标签下不含子标签的纯链接文本,结构固定时也可直接用aNode.FirstChild.InnerText.Trim()
    String text = string.Join("", aNode.ChildNodes
        .Where(n => n.NodeType == HtmlNodeType.Text)
        .Select(n => n.InnerText)).Trim();
    // 如果你需要包含small在内的所有a标签文本,直接用 String text = aNode.InnerText.Trim();
    String nums = aNode.SelectSingleNode(".//small")?.InnerText.Trim() ?? string.Empty; // 提取small标签内容
    ...
}

关键说明

  • GetAttributeValue(属性名, 默认值):Html Agility Pack封装的属性读取方法,当属性不存在时直接返回你指定的默认值,不需要手动判空处理。
  • 子节点查询的XPath路径开头加.:代表从当前循环的li节点开始向下查询,不加.会从整个HTML文档根节点查询,导致取到错误的结果。
  • ?.和??语法:针对可能不存在的small标签做容错,避免空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:54:02