Skip to main content

Command Palette

Search for a command to run...

.NET Foundation 프로젝트 소개(2): AngleSharp

Updated
2 min read
.NET Foundation 프로젝트 소개(2): AngleSharp

여러분의 시간을 아낄 수 있는 .NET Foundation의 유용한 프로젝트를 소개하는 시간입니다.

오늘 소개하는 프로젝트는 AngleSharp 인데요, AngleSharp는 .NET 표준 라이브러리 형태로 .NET 애플리케이션에서 사용할 수 있는 최신 웹 도구 기반 .NET 브라우저 엔진 코어 입니다.

image.png image|600x400

라이브러리에는 완전히 구현된 HTML5 파서와 L4 쿼리 선택기를 사용하여 탐색할 수 있는 동적 DOM 구현이 포함되어 있습니다. AngleSharp는 W3C 사양과 WHATWG 참조를 완전히 준수하여 에버그린 브라우저와 최대 호환성을 보장합니다.

AngleSharp의 생태계는 통합 CSS3 파서, XPath 지원 및 실험적으로 JavaScript 엔진과 같은 확장 라이브러리를 제공합니다.

AngleSharp의 장기적인 비전은 .NET 애플리케이션 내에서 표준 웹 자산을 다운로드 및 검사, 실행 및 렌더링하기 위한 모든 빌딩 블록을 제공하는 것입니다.

프로젝트 정보 사이트는 다음과 같습니다. https://anglesharp.github.io/

그리고 프로젝트 소스코드는 이곳에서 살펴볼 수 있고요, https://github.com/AngleSharp

다음의 코드 처럼 사용할 수 있습니다.

var config = Configuration.Default.WithDefaultLoader();
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes";
var context = BrowsingContext.New(config);
var document = await context.OpenAsync(address);
var cellSelector = "tr.vevent td:nth-child(3)";
var cells = document.QuerySelectorAll(cellSelector);
var titles = cells.Select(m => m.TextContent);

AngleSharp 문서는 이곳을 통해 확인하실 수 있습니다. https://github.com/AngleSharp/AngleSharp/blob/devel/docs/README.md

주요 기능은 다음과 같습니다.

  • 이식성 (.NET Standard 2.0 사용)
  • 표준 준수 (에버그린 브라우저와 동일하게 작동)
  • 뛰어난 성능 (대부분의 시나리오에서 유사한 파서를 능가)
  • 확장 가능 (자체 서비스로 확장)
  • 유용한 추상화 (유형 도우미, jQuery와 같은 구성)
  • 완전한 기능의 DOM (목록, 반복자, 이벤트 등 알고 있는 모든 것)
  • 양식 제출 (어디서나 쉽게 로그인)
  • 탐색 (BrowsingContext는 브라우저 탭과 같습니다. .NET에서 제어합니다!)
  • 향상된 LINQ (DOM 요소와 함께 LINQ 사용, 자연스럽게 래퍼 없이 사용)
14 views

More from this blog

개발, 테스트, 운영에서의 도커 활용

핵심 원칙: "한 번 빌드하고, 어디서든 실행한다 (Build once, run anywhere)" 도커의 가장 큰 장점은 환경 일관성입니다. 동일한 도커 이미지를 사용하여 개발, 테스트, 운영 환경을 구성함으로써 "제 PC에서는 됐는데..." 하는 문제를 최소화할 수 있습니다. 1. 개발 단계 (Development) 목표: 빠른 코드 변경 반영, 쉬운 디버깅, 실제 운영 환경과 유사한 환경 구성. Docker 사용 방안: Dockerf...

May 9, 20256 min read17

[EF Core] 데이터 삭제 시 소프트 삭제 적용

DB에서 데이터를 삭제하면 일반적으로 복구할 수 없습니다. 또한 관계에 따라 영구 삭제 자체가 어려울 수도 있습니다. 그래서 데이터를 영구 삭제하는 대신 IsDeleted 속성을 true로 주고 IsDeleted 속성을 필터링해서 조회하는 방법을 사용하기도 합니다. 이를 소프트 삭제라고 합니다. 그런데 EF에서 알아서 데이터 삭제 시 소프트 삭제를 하고 쿼리시 IsDeleted 속성을 체크해서 삭제한 데이터를 제외한 데이터만 쿼리하게 하는 ...

Mar 18, 20243 min read20

[EF Core] ValueConverter를 이용해서 엔터티 속성의 도메인 관리

EF Core를 사용하면서 문자열 길이 등의 특성을 일일이 지정하는 것은 번거롭습니다. ... [MaxLength(32)] public string? 제목 { get; set; } 엔터티가 한 개일 때는 상관이 없으나 제목 유형이 여러 엔터티에 사용될 경우 유형을 지정하기 번거롭습니다. 속성 유형을 도메인으로 관리하면 참 편할텐데요, ValueConverter를 이용할 수 있습니다. 그런데 이것을 인터페이스 정적 추상를 사용해서 다음처럼 ...

Mar 16, 20242 min read8

디모이 블로그

154 posts

.NET 관련 기술을 선호하고 새로운 언어를 배우는데 관심이 있습니다.