HTML 테이블에서 데이터를 추출하는 방법

HTML 테이블은 정보를 표시하기 위해 웹에서 널리 사용됩니다. HTML 테이블에서 데이터를 추출하는 것은 웹 스크래핑, 데이터 분석 및 자동화에서 일반적입니다. 파서를 구축할 때 HTML 테이블에서 데이터를 추출하고 이를 JSON, CSV 또는 Excel과 같은 구조화된 형식으로 변환해야 하는 경우가 많습니다. HTML 테이블에서 데이터를 추출하는 방법을 살펴보겠습니다.

먼저 프로젝트에 Aspose.HTML for .NET이 설치되어 있는지 확인하세요. 이 라이브러리의 설치 과정은 매우 간단합니다. NuGet 패키지 관리자를 열고 Aspose.HTML을 검색하여 설치합니다. 패키지 관리자 콘솔에서 다음 명령을 사용할 수도 있습니다.


Aspose.HTML for .NET 설치

Install-Package Aspose.HTML



C#을 사용하여 HTML 테이블에서 데이터 추출

Aspose.HTML for .NET 은 HTML 문서에서 정보를 구문 분석하고 수집하기 위한 강력한 도구 세트를 제공하는 강력한 라이브러리입니다. 다음 예에서는 HTML 문서에서 모든 <table> 요소를 찾고, 테이블 데이터를 추출하고, JSON 형식으로 출력하는 방법을 보여줍니다. HTML의 테이블에 테스트 목록이 포함되어 있다고 가정해 보겠습니다. 각 테스트에는 ID, 이름, 테스트에 대한 설명, 테스트 내용에 대한 하이퍼링크가 있습니다. 이는 다음 예의 테이블에서 추출하려는 정보입니다.


HTML 테이블에서 데이터를 추출하는 C# 코드

using Aspose.Html;
using System.IO;
using System.Linq;
using System.Text.Json;
using System.Collections.Generic;
...

    // Open the document from which you want to extract table data
    using var document = new HTMLDocument(Path.Combine(DataDir, "chapter-9.htm"));
    {
        // Check if there are any table elements in the document
        var tables = document.GetElementsByTagName("table");

        if (tables.Any())
        {
            var result = new List<Dictionary<string, string>>();
            //var i = 0;
            foreach (var table in tables)
            {
                // extract data from html table
                var tbodies = table.GetElementsByTagName("tbody");

                foreach (var tbody in tbodies)
                {
                    if (tbody.Children.Length > 1)
                    {
                        foreach (var row in tbody.Children)
                        {
                            if (row.HasAttribute("id"))
                            {
                                //test row
                                var data = new Dictionary<string, string>();

                                data["Id"] = row.GetAttribute("id");
                                if (row.Children.Length > 0)
                                {
                                    var td = row.Children[0];
                                    if (td.Children.Length > 0)
                                    {
                                        var element = td.Children[0].TagName == "STRONG"
                                            ? td.Children[0].Children[0]
                                            : td.Children[0];
                                        var href = ((HTMLAnchorElement)element).Href;
                                        data["Href"] = href;
                                        data["TestName"] = Path.GetFileNameWithoutExtension(href);
                                    }
                                }

                                data["TestComment"] = string.Join(" ",
                                    row.Children[3].TextContent
                                        .Split(new char[0], StringSplitOptions.RemoveEmptyEntries).ToList()
                                        .Select(x => x.Trim()));
                                result.Add(data);
                            }
                        }
                        var json = JsonSerializer.Serialize(result);
                        Console.WriteLine(json);
                    }
                }
            }
        }
        else
        {
            // Handle the case where no tables are found
            Console.WriteLine("No tables found in the document.");
        }
    }



HTML 테이블에서 데이터를 추출하는 단계

다음 단계를 수행하면 데이터 분석이나 보고를 비롯한 다양한 목적을 위해 HTML에서 하이퍼링크, 텍스트 콘텐츠 등의 테이블 데이터를 추출할 수 있습니다.

  1. HTMLDocument() 생성자를 사용하여 HTML 문서를 초기화합니다. 소스 HTML 파일의 경로를 생성자에 매개변수로 전달합니다.
  2. GetElementsByTagName("table") 메서드를 사용하여 모든 <table> 요소를 수집합니다. 이 메소드는 HTML 문서의 <table> 요소 목록을 반환합니다. 테이블 요소 컬렉션을 tables 변수에 저장합니다.
  3. LINQ Any() 메서드를 사용하여 HTML 문서에 <table> 요소가 있는지 확인합니다. 이렇게 하면 데이터를 추출할 테이블이 있는지 확인됩니다.
  4. foreach 루프를 사용하여 문서에서 찾은 각 테이블을 반복합니다.
    • GetElementsByTagName("tbody") 메서드를 사용하여 모든 <tbody> 요소(테이블 본문)를 검색합니다.
    • 루프 내에서 각 <tbody> 요소를 반복하여 다른 foreach 루프를 사용하여 얻은 데이터 행에 액세스합니다.
    • 특정 조건이나 속성을 기반으로 각 행에서 관련 데이터를 추출합니다.
    • 모든 행에서 데이터를 추출한 후 JsonSerializer.Serialize() 메소드를 사용하여 추출된 데이터가 포함된 사전 목록을 JSON 형식으로 직렬화합니다.
  5. Console.WriteLine() 메서드를 사용하여 콘솔에 표시할 직렬화된 JSON을 출력합니다.
  6. 문서에 테이블이 없으면 테이블을 찾을 수 없다는 메시지를 콘솔에 인쇄합니다.

Aspose.HTML API에 대해 자세히 알아보려면 문서 가이드를 참조하세요. Aspose.HTML for .NET은 HTML, XHTML, MD, EPUB 및 MHTML 파일을 생성, 편집 및 변환할 수 있는 고급 HTML 구문 분석 라이브러리입니다. Data Extraction 문서 섹션에서는 Aspose.HTML for .NET을 사용하여 웹 페이지에서 데이터를 자동으로 검사, 수집 및 추출하는 방법을 설명합니다. 이 섹션의 기사에서는 HTML 문서를 탐색하고 해당 요소를 자세히 검사하는 방법, URL에서 웹 사이트나 파일을 저장하는 방법, 웹 사이트에서 다양한 유형의 이미지를 추출하는 방법 등을 배웁니다.



HTML 테이블 생성기 – 온라인 앱

Aspose.HTML은 사용자 정의 가능한 옵션이 포함된 테이블을 생성하기 위한 온라인 애플리케이션인 HTML 테이블 생성기 를 제공합니다. 무료이며 사용이 명확합니다. 필수 옵션을 모두 입력하고 결과를 얻으세요! HTML 테이블 생성기는 HTML 테이블 코드를 자동으로 생성합니다. 이 도구는 필요한 HTML 테이블을 가져와 가능한 한 빨리 온라인에 게시할 수 있도록 설계되었습니다.

기타 지원되는 C# 라이브러리 기능

Aspose.HTML for .NET 라이브러리를 사용하여 HTML 기반 문서를 구문 분석하고 조작합니다. 명확하고 안전하며 간단합니다!