- 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: XPath