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

  • .Net core 采集网页表格数据方法已关闭评论
  • 80 次浏览
  • A+
所属分类:.NET技术
摘要

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

使用 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 结构不符合标准,可能需要进行适当的修改来适应实际情况。