User Tools

Site Tools


blog:2025-03-12-003



2025-03-12 如何以C#解析html 中所有不同table, 並轉成csv

  • 要在 C# 中解析 HTML 中的所有不同表格並將其轉換為 CSV,你可以使用 HtmlAgilityPack 這個庫來輕鬆地處理 HTML 文檔。
  • 以下是一步一步的指南以及範例代碼:

步驟

  • 1, 安裝 HtmlAgilityPack:
    • 使用 NuGet 包管理器安裝 HtmlAgilityPack。
    • Install-Package HtmlAgilityPack
  • 2, 解析 HTML 和提取表格:
    • 使用 HtmlAgilityPack 來載入 HTML,然後查找所有表格元素。
  • 3, 將表格數據轉換為 CSV 格式:
    • 遍歷每個表格的行和單元格,並將其寫入 CSV 文件。

範例代碼

  • 以下是一個簡單的範例代碼,展示如何實現上述步驟:
  • using HtmlAgilityPack;
    using System;
    using System.IO;
    using System.Text;
    
    class Program
    {
        static void Main(string[] args)
        {
            string htmlFilePath = "path/to/your/file.html"; // HTML 文件路徑
            string csvFilePath = "path/to/your/output.csv"; // 輸出 CSV 文件路徑
    
            // 載入 HTML 文件
            var htmlDoc = new HtmlDocument();
            htmlDoc.Load(htmlFilePath);
    
            // 找到所有表格
            var tables = htmlDoc.DocumentNode.SelectNodes("//table");
    
            if (tables != null)
            {
                StringBuilder csvBuilder = new StringBuilder();
    
                foreach (var table in tables)
                {
                    // 處理每個表格
                    var rows = table.SelectNodes(".//tr");
                    foreach (var row in rows)
                    {
                        var cells = row.SelectNodes(".//th|.//td");
                        if (cells != null)
                        {
                            for (int i = 0; i < cells.Count; i++)
                            {
                                csvBuilder.Append(cells[i].InnerText.Trim());
                                if (i < cells.Count - 1)
                                    csvBuilder.Append(","); // 逗號分隔
                            }
                            csvBuilder.AppendLine(); // 換行
                        }
                    }
                    csvBuilder.AppendLine(); // 表格間隔
                }
    
                // 寫入 CSV 文件
                File.WriteAllText(csvFilePath, csvBuilder.ToString());
                Console.WriteLine("CSV 文件已成功生成!");
            }
            else
            {
                Console.WriteLine("未找到任何表格。");
            }
        }
    }

說明

  • HtmlDocument:用來載入和解析 HTML 文檔。
  • SelectNodes:透過 XPath 查找所有表格和行。
  • StringBuilder:用來構建 CSV 字符串。
  • File.WriteAllText:將生成的 CSV 字符串寫入文件。

注意事項

  • 確保 HTML 文件的路徑正確。
  • CSV 文件的路徑也需正確,以避免寫入錯誤。
  • 本範例假設每個表格的行都包含相同數量的單元格,根據需要進行調整。
  • 這樣你就可以將 HTML 中的表格轉換為 CSV 格式了!

TAGS

  • 1 person(s) visited this page until now.

blog/2025-03-12-003.txt · Last modified: 2025/03/12 13:23 (external edit)