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

如何在C#中用HTMLAgilityPack正确提取HTML中的指定独立值?

用C# + HTMLAgilityPack提取指定HTML元素的解决方案

我来帮你搞定这个HTML解析的问题!用C#和HTMLAgilityPack提取这些指定元素其实没那么复杂,核心是要精准定位到对应的标签节点。先假设你的目标HTML结构大概是这样的(如果实际结构不一样,你只需要调整选择器就行):

<div class="player-card">
  <span class="rank">9</span>
  <div class="player-info">
    <h3 class="player-name">Playername</h3>
    <span class="position">Position</span>
  </div>
  <div class="stats-container">
    <span>3</span>
    <span>6</span>
    <span>4</span>
    <span>2</span>
    <span>0</span>
    <span>0</span>
  </div>
</div>

具体实现步骤

首先确保你已经通过NuGet安装了HTMLAgilityPack,然后可以用下面的代码来提取这些值:

using HtmlAgilityPack;
using System.Collections.Generic;

// 加载你的HTML内容(可以是从网页获取的字符串,或者本地文件)
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(yourHtmlContent); // 替换成你的HTML字符串

// 提取第一个目标值:9(假设它在class为"rank"的span里)
var rankNode = htmlDoc.DocumentNode.SelectSingleNode("//span[@class='rank']");
string rank = rankNode?.InnerText.Trim() ?? "未找到";

// 提取Playername(假设在class为"player-name"的h3标签里)
var playerNameNode = htmlDoc.DocumentNode.SelectSingleNode("//h3[@class='player-name']");
string playerName = playerNameNode?.InnerText.Trim() ?? "未找到";

// 提取Position(假设在class为"position"的span里)
var positionNode = htmlDoc.DocumentNode.SelectSingleNode("//span[@class='position']");
string position = positionNode?.InnerText.Trim() ?? "未找到";

// 提取六个数字:3、6、4、2、0、0(假设它们在class为"stats-container"的div下的span里)
var statsNodes = htmlDoc.DocumentNode.SelectNodes("//div[@class='stats-container']/span");
List<string> statsList = new List<string>();
if (statsNodes != null)
{
    foreach (var node in statsNodes)
    {
        statsList.Add(node.InnerText.Trim());
    }
}

// 测试输出结果
Console.WriteLine($"Rank: {rank}");
Console.WriteLine($"Player Name: {playerName}");
Console.WriteLine($"Position: {position}");
Console.WriteLine($"Stats: {string.Join(", ", statsList)}");

关键注意点

  • 调整选择器:如果你的HTML结构和示例不同,只需要修改XPath表达式就行。比如如果目标元素是通过id定位,就用//*[@id='your-element-id'];如果是嵌套在特定父元素下,就写更精确的路径,比如//div[@class='player-card']/span[@class='rank']。
  • 空值防护:一定要加?.和??的空值判断,避免因为节点找不到而抛出空引用异常。
  • CSS选择器替代:如果你更喜欢用CSS选择器,HTMLAgilityPack也支持,比如用htmlDoc.DocumentNode.QuerySelector(".rank")代替XPath的SelectSingleNode,用法和JavaScript里的选择器完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:13:07