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

如何在C#中使用Selenium从列表的多个div元素中提取值并存入列表

解决方案

步骤1:安装依赖库

优先使用NuGet安装HtmlAgilityPack,这是.NET生态下最成熟的HTML节点解析库,比正则匹配容错性更高,可适配各类不规范的HTML结构。

步骤2:核心实现代码

using HtmlAgilityPack;
using System.Collections.Generic;
using System.Linq;

public List<string> ExtractOrderNumbers(string htmlContent)
{
    var orderNumbers = new List<string>();
    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(htmlContent);

    // 筛选所有class为spareValue的div节点,返回空集合避免空引用异常
    var spareDivs = doc.DocumentNode.SelectNodes("//div[contains(@class, 'spareValue')]") ?? Enumerable.Empty<HtmlNode>();

    foreach (var div in spareDivs)
    {
        // 获取当前div下的label节点
        var labelNode = div.SelectSingleNode(".//span[contains(@class, 'label')]");
        if (labelNode == null) continue;

        // 仅处理OrderNumber对应的节点
        if (labelNode.InnerText.Trim() == "OrderNumber:")
        {
            var partNumNode = div.SelectSingleNode(".//span[contains(@class, 'PartNumber')]");
            if (partNumNode != null)
            {
                orderNumbers.Add(partNumNode.InnerText.Trim());
            }
        }
    }

    return orderNumbers;
}

补充说明

  • 若需要将编号转为数值类型,可在添加到列表时用int.TryParse做校验转换,避免格式错误导致程序崩溃
  • 如果还未获取到网页HTML源码,可通过HttpClient发起请求获取响应内容后,再传入上述方法处理
  • 若页面内容是JavaScript动态渲染生成的,需要先使用无头浏览器(如PuppeteerSharp)获取渲染完成后的完整HTML再做解析
  • 不推荐使用正则匹配提取,HTML结构稍有变动就会导致匹配失效,仅在无解析库可用的场景下临时使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:06:05