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

打印 上一主题 下一主题

主题 894|帖子 894|积分 2682

使用 HtmlAgilityPack 库来将 HTML 表格转换为 DataTable。
首先,确保已经安装了 HtmlAgilityPack 包。可以通过 NuGet 包管理器或者通过命令行安装。
按照以下步骤将 HTML 表格转换为 DataTable:

  • 导入命名空间:
csharpCopy Code
  1. using HtmlAgilityPack;
复制代码

  • 创建一个方法来进行转换:
csharpCopy Code
  1. public static DataTable ConvertHtmlTableToDataTable(string html)
  2. {
  3.     DataTable dataTable = new DataTable("MyDataTable");
  4.     // 加载 HTML 字符串
  5.     HtmlDocument doc = new HtmlDocument();
  6.     doc.LoadHtml(html);
  7.     // 找到表格节点
  8.     HtmlNode tableNode = doc.DocumentNode.SelectSingleNode("//table");
  9.     if (tableNode != null)
  10.     {
  11.         // 找到所有的表头行和数据行
  12.         IEnumerable<HtmlNode> headerRows = tableNode.SelectNodes("tr[th]");
  13.         IEnumerable<HtmlNode> dataRows = tableNode.SelectNodes("tr[td]");
  14.         // 添加表头列到 DataTable
  15.         if (headerRows != null)
  16.         {
  17.             foreach (HtmlNode headerRow in headerRows)
  18.             {
  19.                 foreach (HtmlNode headerCell in headerRow.SelectNodes("th"))
  20.                 {
  21.                     dataTable.Columns.Add(headerCell.InnerText.Trim());
  22.                 }
  23.             }
  24.         }
  25.         // 添加数据列到 DataTable
  26.         if (dataRows != null)
  27.         {
  28.             foreach (HtmlNode dataRow in dataRows)
  29.             {
  30.                 DataRow row = dataTable.NewRow();
  31.                 for (int i = 0; i < dataTable.Columns.Count; i++)
  32.                 {
  33.                     HtmlNode dataCell = dataRow.SelectNodes("td")[i];
  34.                     row[i] = dataCell.InnerText.Trim();
  35.                 }
  36.                 dataTable.Rows.Add(row);
  37.             }
  38.         }
  39.     }
  40.     return dataTable;
  41. }
复制代码

  • 调用方法进行转换:
csharpCopy Code
  1. string html = "<table>...</table>";  // 假设这里是你的 HTML 表格字符串
  2. DataTable dataTable = ConvertHtmlTableToDataTable(html);
复制代码
注意:这段代码假设 HTML 表格的结构是标准的,即包含表头行([tr] 元素中包含  元素)和数据行([tr] 元素中包含 [td] 元素)。如果 HTML 结构不符合标准,可能需要进行适当的修改来适应实际情况。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表