首页 > 其他分享 >.Net core 采集网页表格数据方法

.Net core 采集网页表格数据方法

时间:2023-06-30 13:55:31浏览次数:51  
标签:core 网页 表格 HtmlNode dataTable HTML tableNode Net DataTable

使用 HtmlAgilityPack 库来将 HTML 表格转换为 DataTable。

首先,确保已经安装了 HtmlAgilityPack 包。可以通过 NuGet 包管理器或者通过命令行安装。

按照以下步骤将 HTML 表格转换为 DataTable:

  1. 导入命名空间:
csharpCopy Code
using HtmlAgilityPack;
  1. 创建一个方法来进行转换:
csharpCopy Code
public static DataTable ConvertHtmlTableToDataTable(string html)
{
    DataTable dataTable = new DataTable("MyDataTable");

    // 加载 HTML 字符串
    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);

    // 找到表格节点
    HtmlNode tableNode = doc.DocumentNode.SelectSingleNode("//table");

    if (tableNode != null)
    {
        // 找到所有的表头行和数据行
        IEnumerable<HtmlNode> headerRows = tableNode.SelectNodes("tr[th]");
        IEnumerable<HtmlNode> dataRows = tableNode.SelectNodes("tr[td]");

        // 添加表头列到 DataTable
        if (headerRows != null)
        {
            foreach (HtmlNode headerRow in headerRows)
            {
                foreach (HtmlNode headerCell in headerRow.SelectNodes("th"))
                {
                    dataTable.Columns.Add(headerCell.InnerText.Trim());
                }
            }
        }

        // 添加数据列到 DataTable
        if (dataRows != null)
        {
            foreach (HtmlNode dataRow in dataRows)
            {
                DataRow row = dataTable.NewRow();

                for (int i = 0; i < dataTable.Columns.Count; i++)
                {
                    HtmlNode dataCell = dataRow.SelectNodes("td")[i];
                    row[i] = dataCell.InnerText.Trim();
                }

                dataTable.Rows.Add(row);
            }
        }
    }

    return dataTable;
}
  1. 调用方法进行转换:
csharpCopy Code
string html = "<table>...</table>";  // 假设这里是你的 HTML 表格字符串

DataTable dataTable = ConvertHtmlTableToDataTable(html);

注意:这段代码假设 HTML 表格的结构是标准的,即包含表头行(<tr> 元素中包含 <th> 元素)和数据行(<tr> 元素中包含 <td> 元素)。如果 HTML 结构不符合标准,可能需要进行适当的修改来适应实际情况。

标签:core,网页,表格,HtmlNode,dataTable,HTML,tableNode,Net,DataTable
From: https://www.cnblogs.com/wtlcy/p/17516603.html

相关文章

  • HTML网页内容适配——标题栏
      前言现在很多网页用的都是固定标题栏,就像这样:很多网站为了兼容小窗口还会做个JS适配:但是如果窗口比这还小的话...那就只剩下一部分了。由于设置position:fixed后元素不会随着滚动条滚动,所以超出页面边缘的部分将永远看不见,除非增大窗口或缩小显示比例。很......
  • iis部署.netcore项目不允许put 和post,delete请求
    在webconfig中添加红色标记部分<?xmlversion="1.0"encoding="utf-8"?><configuration><system.webServer><modulesrunAllManagedModulesForAllRequests="true"><removename="WebDAVModule"/></......
  • ASP.NET的自定义分页
    usingSystem;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Data.SqlClient;namespaceControlLibs{///<summary>///CustomPager的摘要说明。///</summary>[DefaultProperty(&......
  • NETGEAR R7800路由器TFTP刷回原厂固件方法
    前几天因图新鲜将用了一年的R7800刷为dd-wrt固件,结果发现信号覆盖和网络速率相对于原厂固件还有一些差距。然后从dd-wrt固件刷回原厂,具体操作过程如下:1、到NETGEAR官网【支持】模块下载想恢复的对应版本固件我下载的版本为1.0.2.62。2、 下载TFTP客户端命令行工具。连接地址为:ht......
  • urlMappings在asp.net2.0,asp.net4.0中的差异
    asp.net从2.0开始支持urlMappings,最近在项目中发现一点问题。我在公司使用的是vs2010,dotnetFramework版本为4.0。由于项目需要,需要将一个default.aspx页面的url改为Item,也就没想太多,直接使用了urlMappings.在IIS设置无后缀映射,结果效果很好,连form的action都改变了。如下......
  • 关于HTML页以Get方法向asp.net页面传值乱码的解决
    这个问题是最近偶然发现的,朋友说我个人做那个基于Lucene的搜索引擎,存在一个问题,就是只能搜索英文,不能搜索中文。我把代码仔细看了一下,没发现问题,但是在测试的时候确实存在这样的问题。我查看传值之后的参数,全部是乱码或者空格,立即觉得是传递过程中编码的问题。后来在web.config中添......
  • .NETCORE 如何使用Redis进行消息订阅和发布
    创建RedisMessagePublisher和RedisMessageSubscriber。RedisMessagePublisher用于发布消息到指定的频道,而RedisMessageSubscriber用于订阅频道并处理接收到的消息usingStackExchange.Redis;usingSystem;publicclassRedisMessagePublisher{privatereadonlyIConnectionM......
  • .NETCORE 进行Redis读写
    usingStackExchange.Redis;publicclassRedisDataStorage{privatereadonlyIConnectionMultiplexer_redis;publicRedisDataStorage(stringconnectionString){_redis=ConnectionMultiplexer.Connect(connectionString);}publicvoidSe......
  • kubernetes安装实战->稳定版本v1.14.3
    kubernetes安装方式有很多种,这里kubeadm方式安装,一主两从形式部署。1、集群信息a、集群节点规划主机名   节点ip    角色  部署组件k8s-master192.168.1.203masteretcd、proxy、apiserver、controller-manage、scheduler、coredns、pausek8s-node1 192.16......
  • .net6搭建websocket
    当使用.NET6构建WebSocket微服务时,可以按照以下步骤进行操作:1.创建新的.NET6项目:打开适用于.NET6的IDE(如VisualStudio2022或VisualStudioCode),创建一个新的空白项目。.net6默认引入了Microsoft.AspNetCore.WebSockets2,3步骤省略2.添加WebSocket支持:确保项目引用了`Mi......