소개

  • HTML 파싱 라이브러리입니다
  • XPath로 HTML을 파싱하는 클래스 라이브러리
  • 먼저 XPath 기본 개념을 간략하게 익히는 것을 권장합니다
  • XPath는 경로 표현식을 통해 XML 안의 노드 값과 속성 값을 가져옵니다
  • 오픈소스 .NET 라이브러리입니다
  • 구 소스코드 저장소:http://htmlagilitypack.codeplex.com/

현재 공식 소스코드는 GitHub에 호스팅:https://github.com/zzzprojects/html-agility-pack

Html Agility Pack은 .NET 생태계에서 고전적인 오픈소스 HTML 파싱 라이브러리로 C#으로 개발되었으며 웹 스크래핑, HTML 콘텐츠 추출, HTML 문서 수정에 널리 사용됩니다.

가장 큰 장점:비정상적이거나 불완전한 HTML도 호환(대부분의 웹페이지는 표준 XML 형식이 아니어서 일반 XmlDocument로는 파싱할 수 없지만 HAP는 자동으로 오류를 보정해 처리합니다).

XPath는 원래 XML 문서 조회용으로 만들어졌습니다. HAP가 HTML을 DOM 트리로 불러온 뒤 XPath 문법으로 노드를 검색할 수 있습니다:

  • 경로 표현식으로 태그 필터링, 텍스트 취득, 속성 추출
  • 자주 쓰는 메서드:
    • SelectSingleNode("xpath표현식"):첫 번째 일치하는 노드를 반환
    • SelectNodes("xpath표현식"):조건에 맞는 모든 노드를 반환

소스코드를 직접 다운로드할 필요 없이 NuGet으로 패키지를 설치하면 됩니다

Install-Package HtmlAgilityPack

.NET Framework, .NET Core, .NET 5~.NET9, MAUI 등 주요 .NET 플랫폼을 지원합니다.

간단한 예시입니다. Visual Studio에서 콘솔 애플리케이션을 생성한 뒤

Main 함수 안에 아래 코드를 추가하세요

using HtmlAgilityPack;

//1.HTML 텍스트 불러오기
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml("웹페이지 HTML 문자열");

//2.XPath로 요소 조회
HtmlNode titleNode = htmlDoc.DocumentNode.SelectSingleNode("//title");
string title = titleNode?.InnerText;Code language: C++ (cpp)

이렇게 하면 HTML 문자열 파싱이 가능합니다.

소개

Next:

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다