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에서 하이퍼링크, 텍스트 콘텐츠 등의 테이블 데이터를 추출할 수 있습니다.
- HTMLDocument() 생성자를 사용하여 HTML 문서를 초기화합니다. 소스 HTML 파일의 경로를 생성자에 매개변수로 전달합니다.
- GetElementsByTagName(
"table"
) 메서드를 사용하여 모든<table>
요소를 수집합니다. 이 메소드는 HTML 문서의<table>
요소 목록을 반환합니다. 테이블 요소 컬렉션을tables
변수에 저장합니다. - LINQ
Any()
메서드를 사용하여 HTML 문서에<table>
요소가 있는지 확인합니다. 이렇게 하면 데이터를 추출할 테이블이 있는지 확인됩니다. foreach
루프를 사용하여 문서에서 찾은 각 테이블을 반복합니다.GetElementsByTagName("tbody")
메서드를 사용하여 모든<tbody>
요소(테이블 본문)를 검색합니다.- 루프 내에서 각
<tbody>
요소를 반복하여 다른foreach
루프를 사용하여 얻은 데이터 행에 액세스합니다. - 특정 조건이나 속성을 기반으로 각 행에서 관련 데이터를 추출합니다.
- 모든 행에서 데이터를 추출한 후
JsonSerializer.Serialize()
메소드를 사용하여 추출된 데이터가 포함된 사전 목록을 JSON 형식으로 직렬화합니다.
Console.WriteLine()
메서드를 사용하여 콘솔에 표시할 직렬화된 JSON을 출력합니다.- 문서에 테이블이 없으면 테이블을 찾을 수 없다는 메시지를 콘솔에 인쇄합니다.
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 기반 문서를 구문 분석하고 조작합니다. 명확하고 안전하며 간단합니다!