
웹 스크래핑은 웹사이트에서 데이터를 추출하는 데 사용되는 기술입니다. 웹 사이트 및 HTML 파일에서 데이터를 추출하는 프로세스를 자동화하는 데 도움이 됩니다. C# 개발자로서 우리는 웹 페이지에서 이미지, 비디오, 오디오 등과 같은 데이터를 쉽게 검사, 캡처 및 추출할 수 있습니다. 이 기사에서는 C#을 사용하여 HTML 파싱으로 웹 스크래핑을 수행하는 방법을 배웁니다.
이 기사에서는 다음 주제를 다룹니다.
- C# 웹 스크래핑 API
- C#을 사용하여 HTML 읽기 및 추출
- C#을 사용하여 문서 요소 검사
- C#에서 필터를 사용하여 특정 요소 찾기
- C#을 사용하여 HTML에서 데이터 쿼리
- C#에서 CSS 선택기를 사용하여 추출
C# 웹 스크래핑 API
HTML 파일 또는 URL에서 웹 스크래핑을 위해 Aspose.HTML for .NET API를 사용합니다. 외부 소프트웨어 없이 HTML 문서를 생성, 수정, 추출, 변환 및 렌더링할 수 있는 고급 HTML 처리 API입니다. API의 DLL을 다운로드하거나 NuGet을 사용하여 설치하십시오.
PM> Install-Package Aspose.Html
C#을 사용하여 HTML 읽기 및 추출
다음 단계에 따라 모든 HTML 문서에서 HTML을 읽고 추출할 수 있습니다.
- HTMLDocument 클래스를 사용하여 HTML 문서를 로드합니다.
- 파일의 내부 HTML을 콘솔에 표시합니다.
다음 코드 샘플은 C#을 사용하여 HTML 콘텐츠를 읽고 추출하는 방법을 보여줍니다.
// 이 코드 예제는 HTML 문서의 내용을 표시하는 방법을 보여줍니다
// HTML 문서 로드
var document = new HTMLDocument(@"D:\Files\html\input.html");
// 문서의 내부 HTML 표시
Console.WriteLine(document.Body.InnerHTML);

C#을 사용하여 HTML을 읽고 추출합니다.
마찬가지로 아래와 같이 라이브 웹사이트에서 HTML을 읽고 추출할 수 있습니다.
// 이 코드 예제는 라이브 웹사이트 URL의 콘텐츠를 표시하는 방법을 보여줍니다.
// URL 초기화
Url url = new Url("https://en.wikipedia.org/wiki/HTML");
// Url 인스턴스를 사용하여 HTML 파일 로드
HTMLDocument document = new HTMLDocument(url);
// 콘솔에 파일의 내부 HTML 표시
Console.WriteLine(document.Body.InnerHTML);
C#을 사용하여 문서 요소 검사
다음 단계에 따라 문서와 해당 요소를 검사할 수 있습니다.
- HTMLDocument 클래스를 사용하여 HTML 문서를 로드합니다.
- 문서의 HTML 요소를 가져옵니다.
- HTML 요소의 첫 번째/마지막 요소를 가져옵니다.
- TagName, TextContent와 같은 요소 세부 정보를 표시합니다.
다음 코드 샘플은 C#을 사용하여 문서 요소를 검사하는 방법을 보여줍니다.
// 이 코드 예제는 HTML 요소를 검사하는 방법을 보여줍니다.
// 파일에서 문서 로드
string documentPath = @"D:\Files\html\input.html";
HTMLDocument document = new HTMLDocument(documentPath);
// 문서의 html 요소 가져오기
var element = document.DocumentElement;
Console.WriteLine(element.TagName); // HTML
// html 요소의 마지막 요소 가져오기
element = element.LastElementChild;
Console.WriteLine(element.TagName); // BODY
// body 요소의 첫 번째 요소 가져오기
element = element.FirstElementChild;
Console.WriteLine(element.TagName); // H1
Console.WriteLine(element.TextContent); // Header 1
C#에서 필터를 사용하여 특정 요소 찾기
사용자 정의 필터를 사용하여 모든 이미지, 링크 가져오기 등과 같은 특정 요소를 찾을 수 있습니다. 이를 위해 API는 TreeWalker 인터페이스를 제공합니다. WhatToShow 플래그 및 필터(있는 경우)로 정의된 문서 보기를 사용하여 문서 트리 또는 하위 트리를 탐색할 수 있습니다. 아래 단계에 따라 필터를 사용하여 특정 요소를 찾을 수 있습니다.
- NodeFilter 클래스를 사용하여 필터를 정의하고 AcceptNode() 메서드를 재정의합니다.
- HTMLDocument 클래스를 사용하여 HTML 문서를 로드합니다.
- CreateTreeWalker() 메서드를 호출합니다. 루트 노드, 표시할 항목 및 NodeFilter를 인수로 사용합니다.
다음 코드 샘플은 C#을 사용하여 특정 요소를 찾는 방법을 보여줍니다.
// 이 코드 예제는 필터를 사용하여 데이터를 쿼리하는 방법을 보여줍니다.
// HTML 문서 로드
HTMLDocument document = new HTMLDocument(@"D:\Files\html\input.html");
// HTML 탐색을 시작하려면 TreeWalker의 인스턴스를 만들어야 합니다.
// 지정된 매개변수는 문서의 루트에서 걷기 시작한다는 것을 의미합니다.
// 모든 노드를 반복하고 필터의 사용자 정의 구현을 사용합니다.
using (var iterator = document.CreateTreeWalker(document, Dom.Traversal.Filters.NodeFilter.SHOW_ALL, new OnlyImageFilter()))
{
while (iterator.NextNode() != null)
{
// 자체 필터를 사용하고 있으므로 현재 노드는 항상 HTMLImageElement의 인스턴스가 됩니다.
// 따라서 여기에 추가 유효성 검사가 필요하지 않습니다.
var image = (HTMLImageElement)iterator.CurrentNode;
System.Console.WriteLine(image.Src);
// 출력: image1.png
// 출력: image2.png
}
}
// 이 코드 예제는 노드 필터를 정의하는 방법을 보여줍니다.
class OnlyImageFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
public override short AcceptNode(Aspose.Html.Dom.Node n)
{
// 현재 필터는 IMG 요소를 제외한 모든 요소를 건너뜁니다.
return string.Equals("img", n.LocalName)
? FILTER_ACCEPT
: FILTER_SKIP;
}
}
C#을 사용하여 HTML에서 데이터 쿼리
XPath 쿼리를 사용하여 아래 단계에 따라 HTML 문서에서 데이터를 쿼리할 수도 있습니다.
- HTMLDocument 클래스를 사용하여 HTML 문서를 로드합니다.
- Evaluate() 메서드를 호출합니다. XPath 표현식 문자열, 문서 및 유형을 인수로 사용합니다.
- 마지막으로 결과 노드를 반복하고 텍스트를 표시합니다.
다음 코드 샘플은 C#을 사용하여 XPath 쿼리로 데이터를 쿼리하는 방법을 보여줍니다.
// 이 코드 예제는 XPath 쿼리를 사용하여 데이터를 쿼리하는 방법을 보여줍니다.
// HTML 코드 준비
var code = @"
<div class='happy'>
<div>
<span>Hello!</span>
</div>
</div>
<p class='happy'>
<span>World</span>
</p>
";
// 준비된 코드를 기반으로 문서 초기화
HTMLDocument document = new HTMLDocument(code, ".");
// 여기에서 모든 하위 SPAN 요소를 선택하는 XPath 표현식을 평가합니다.
// 'class' 속성이 'happy'와 동일한 요소에서:
var result = document.Evaluate("//*[@class='happy']//span",
document,
null,
Aspose.Html.Dom.XPath.XPathResultType.Any,
null);
// 결과 노드에 대해 반복
for (Aspose.Html.Dom.Node node; (node = result.IterateNext()) != null;)
{
System.Console.WriteLine(node.TextContent);
// 출력: 안녕하세요
// 출력: 세계!
}
C#에서 CSS 선택기를 사용하여 추출
CSS 선택기를 사용하여 HTML 콘텐츠를 추출할 수도 있습니다. 이를 위해 API는 HTML 문서를 탐색하고 필요한 요소를 검색할 수 있는 QuerySelectorAll() 메서드를 제공합니다. 쿼리 선택기를 매개 변수로 사용하고 모든 요소의 일치하는 NodeList를 반환합니다. 다음 단계에 따라 CSS 선택기를 사용하여 쿼리할 수 있습니다.
- HTMLDocument 클래스를 사용하여 HTML 문서를 로드합니다.
- QuerySelectorAll() 메서드를 호출합니다. 쿼리 선택기를 인수로 사용합니다.
- 마지막으로 결과 요소 목록을 반복합니다.
다음 코드 샘플은 C#에서 CSS 선택기를 사용하여 HTML 콘텐츠를 추출하는 방법을 보여줍니다.
// 준비된 코드를 기반으로 문서 초기화
HTMLDocument document = new HTMLDocument(@"D:\Files\html\input.html");
// 여기에서 모든 div 요소를 추출하는 CSS 선택기를 만듭니다.
var elements = document.QuerySelectorAll("div");
// 결과 요소 목록을 반복합니다.
foreach (Aspose.Html.HTMLElement element in elements)
{
System.Console.WriteLine(element.InnerHTML);
}
무료 라이선스 받기
임시 무료 라이선스를 신청하여 평가 제한 없이 API를 사용해 보세요.
결론
이 문서에서는 다음 방법을 배웠습니다.
- C#을 사용하여 HTML 문서의 내용을 읽고 추출합니다.
- 문서 요소를 검사하고 HTML에서 특정 요소를 찾습니다.
- CSS Selector를 사용하여 특정 데이터를 쿼리하고 데이터를 추출합니다.
또한 문서를 사용하여 .NET API용 Aspose.HTML에 대해 자세히 알아볼 수 있습니다. 모호한 부분이 있는 경우 포럼을 통해 언제든지 문의해 주십시오.