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

如何使用C# XPath提取指定HTML元素的InnerText值

使用C# XPath提取HTML元素的InnerText值

要在C#里用XPath提取HTML元素的InnerText,直接用.NET自带的XML解析类(比如XmlDocument)容易踩坑——毕竟大部分网页HTML都不是严格的XML格式。我推荐用HtmlAgilityPack这个专门处理HTML的库,下面是具体步骤:

步骤1:安装HtmlAgilityPack

首先通过NuGet安装这个包:

  • 打开NuGet包管理器控制台,执行命令:Install-Package HtmlAgilityPack
  • 或者在Visual Studio的NuGet包管理器里搜索HtmlAgilityPack并安装。

步骤2:编写代码解析HTML并提取内容

针对你给出的HTML片段,我整理了完整的示例代码(注意我补全了部分截断的HTML内容,你需要替换成自己的完整HTML):

using HtmlAgilityPack;
using System;

class Program
{
    static void Main()
    {
        // 替换成你的完整HTML内容
        string htmlContent = @"<div class=""Lts(1px) Fz(14px) Fs(i) Lh(2.5) Fw(300) Tsh($temperature-text-shadow)""><span>5/3, 12:48 PM</span></div></section><section class=""weather-card C(#fff) M(10px) Pos(a) B(0) Start(0) End(0)"" data-type=""temperature"" data-reactid=""21""><div class=""temperature Fz(14px) Tsh($temperature-text-shadow)"" data-reactid=""22""><div class=""My(2px)"" data-reactid=""23""><span data-code=""30"" class=""Va(m)"" data-reactid=""24"">25°C</span></div></div></section>";

        // 初始化HTML文档对象
        HtmlDocument htmlDoc = new HtmlDocument();
        htmlDoc.LoadHtml(htmlContent);

        // 提取时间文本(对应第一个span的内容)
        var timeElement = htmlDoc.DocumentNode.SelectSingleNode("//div[@class='Lts(1px) Fz(14px) Fs(i) Lh(2.5) Fw(300) Tsh($temperature-text-shadow)']/span");
        if (timeElement != null)
        {
            string timeText = timeElement.InnerText;
            Console.WriteLine($"提取的时间: {timeText}"); // 输出:5/3, 12:48 PM
        }

        // 提取温度相关文本(对应data-type为temperature的section下的span)
        var tempElement = htmlDoc.DocumentNode.SelectSingleNode("//section[@data-type='temperature']//span[@data-code='30']");
        if (tempElement != null)
        {
            string tempText = tempElement.InnerText;
            Console.WriteLine($"提取的温度: {tempText}");
        }
    }
}

关键说明

  1. XPath表达式的写法:
    • 提取时间的XPath://div[@class='Lts(1px) Fz(14px) Fs(i) Lh(2.5) Fw(300) Tsh($temperature-text-shadow)']/span——通过精确匹配div的class属性,定位到它下面的span元素。
    • 提取温度的XPath://section[@data-type='temperature']//span[@data-code='30']——利用data-type这个自定义属性定位section,再通过data-code定位目标span,这种方式比依赖class更稳定(class可能随样式调整变化)。
  2. 处理不完整HTML:你提供的HTML片段有<...截断,实际使用时必须保证HTML结构完整,否则HtmlAgilityPack可能无法正确解析元素。
  3. 空值判断:一定要加if (element != null)的判断,避免因为元素找不到导致空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:39:48