웹 스크래핑 / 크롤링
AngleSharp 는 .NET에서 사용하는 HTML / CSS 파싱 & DOM 처리 라이브러리입니다.
쉽게 말하면 브라우저처럼 HTML을 해석해서 DOM 구조로 만들어주는 엔진이라고 보면 됩니다.
AngleSharp는 C#으로 작성된 오픈 소스 HTML 파서 및 DOM 구현 라이브러리이다. 웹 브라우저의 렌더링 엔진 일부를 재현하여 HTML, XML, SVG, CSS 등을 .NET 환경에서 파싱하고 조작할 수 있게 한다. 주로 웹 스크래핑, 자동화 테스트, HTML 분석에 활용된다.
주요 정보
- 언어: C# (.NET 플랫폼용)
- 라이선스: MIT License
- 개발자: Florian Rappl 및 커뮤니티
- 최초 공개: 2013년경
- 공식 저장소: GitHub – AngleSharp
기능 및 구조
AngleSharp은 HTML5 파싱 알고리즘을 구현하여 문서를 DOM(Document Object Model) 트리로 변환한다. 또한 CSS 선택자, 쿼리, 탐색 기능을 지원해 자바스크립트 없이도 문서 내용을 프로그래밍적으로 조작할 수 있다. 일부 확장 패키지(예: AngleSharp.Css, AngleSharp.Js)는 스타일시트 해석과 스크립팅 환경을 보강한다.
사용 예시 및 활용 분야
개발자는 AngleSharp을 통해 HTML 문서를 파싱한 후, CSS 선택자로 특정 요소를 찾거나 콘텐츠를 분석할 수 있다. 이 기능은 웹 크롤러, 이메일 템플릿 처리기, 테스트 자동화 도구, 서버 측 렌더링 환경 등에서 널리 사용된다.
핵심 기능
1) HTML 파싱 (브라우저 수준)
- 깨진 HTML도 자동 보정해서 파싱
<div><span>같은 비정상 구조도 정상 DOM으로 변환- 실제 브라우저처럼 동작 (HTML5 표준 기반)
|
1 2 3 4 5 6 |
var context = BrowsingContext.New(Configuration.Default); var document = await context.OpenAsync(req => req.Content("<html><body><h1>Hello</h1></body></html>")); var title = document.QuerySelector("h1").TextContent; |
2) DOM 조작 (JavaScript 없이)
QuerySelector,QuerySelectorAll지원 (CSS Selector 기반)- jQuery 느낌으로 사용 가능
|
1 2 3 |
var links = document.QuerySelectorAll("a") |
3) CSS 파싱 & 스타일 분석
- CSS 규칙을 읽고 적용 가능
- 스타일 계산 (AngleSharp.Css 패키지 필요)
4) 웹 스크래핑 / 크롤링
- HTTP 요청 + HTML 파싱 → 데이터 추출
- 크롤러 구현에 많이 사용됨
|
1 2 3 4 |
var document = await context.OpenAsync("https://example.com"); var items = document.QuerySelectorAll(".price"); |
5) JavaScript 실행 (옵션)
- 기본은 JS 실행 안함
AngleSharp.Js추가하면 일부 JS 실행 가능
PreMailer.Net + AngleSharp 조합 많이 씀
→ CSS를 inline 스타일로 변환할 때 내부적으로 AngleSharp 사용
다른 라이브러리와 비교
| 항목 | AngleSharp | HtmlAgilityPack |
|---|---|---|
| HTML5 표준 | ✅ 완벽 지원 | ❌ 제한적 |
| CSS Selector | ✅ 강력 | ❌ 약함 |
| 속도 | ⚖️ 중간 | ⚡ 빠름 |
| 정확도 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 현대 웹 대응 | ✅ | ❌ |
👉 결론
- 정확성 중요 → AngleSharp
- 속도/간단 → HtmlAgilityPack
