Html 민첩성 팩은 여전히 ​​최고의 .NET HTML 파서입니까?

.net c# html html-agility-pack parsing

문제

Html 민첩성 팩StackOverflow 질문에 대한 답변으로 주어진 시간 전, 그것은 여전히 ​​최선의 선택입니까? 고려해야 할 다른 옵션은 무엇입니까? 좀 더 가벼운 것이 있습니까?

수락 된 답변

비교가있는 스프레드 시트 가 있습니다.

요약하자면:

CsQuery Performance 대 Html Agility Pack 및 Fizzler CsQuery를 내가 아는 실용적인 대안 (HtmlAgilityPack 확장 기능인 Fizzler)과 비교하기위한 성능 테스트를 함께 작성했습니다. 나는 3 개의 다른 문서에 대하여 시험했다 :

  • 지글 거리는 테스트 문서 (약 11 k)
  • "치즈"(약 170 k)에 대한 위키 백과 항목
  • 단일 페이지 HTML 5 사양 (약 6 메가 바이트)

전체 결과는 다음과 같습니다.

  • HAP은 HTML 문자열을 객체 모델에로드하는 것이 빠릅니다. 나는 Fizzler가 인덱스를 만들지 않는다고 생각하기 때문에 (또는 비교적 단순한 인덱스 만 만들 수도 있습니다) 의미가 있습니다. CsQuery는 문서를로드하는 데 소요되는 시간이 1.1에서 2.6 배까지 길어집니다. 이에 대한 자세한 내용은 아래를 참조하십시오.
  • CsQuery는 다른 모든 것보다 빠릅니다. 때때로 10,000 이상의 요인에 의해. 한 가지 예외는 "*"선택기인데, 때로는 Fizzler가 더 빠릅니다. 모든 테스트에서 결과는 완전히 열거됩니다. 이 경우 트리의 모든 노드가 열거됩니다. 그래서 이것은 데이터 구조만큼 선택 엔진을 테스트하지 않습니다.
  • CsQuery는 브라우저와 동일한 결과를 반환하는 데 더 효과적이었습니다. 여기에있는 각 선택기는 jQuery 1.7.2를 사용하여 Chrome의 동일한 문서에 대해 확인되었으며 숫자는 CsQuery에서 반환 한 숫자와 일치합니다. 이는 HtmlAgilityPack이 선택적 (누락) 태그를 다르게 처리하기 때문일 수 있습니다. 또한 n 번째 자식은 Fizzler에서 완전히 구현되지 않습니다. 단순한 값 (수식 제외) 만 지원합니다.

인기 답변

HTML 구문 분석의 경우 실제와 비교할 필요가 없습니다. 이것은 validator.nu 파서 의 C # 포트입니다 . 이것은 Gecko 기반 브라우저 (예 : Firefox)에서 사용하는 것과 동일한 코드 기반입니다. 거기 repo는 조금 먼지 투성이가 보인다. 그러나 속지 마라. 항구는 현저하다. 그것은 간과되었습니다. 한 달 전에 CsQuery 에 통합했습니다. 모든 CsQuery 테스트 (대부분의 jQuery 및 Sizzle 테스트가 C #에 포팅 됨)를 통과합니다.

저는 C #으로 작성된 다른 HTML5 파서 또는 심지어 누락되거나, 선택적이거나, 유효하지 않은 태그 처리 측면에서 좋은 결과를 얻기 위해 원격으로 제공되는 파서를 전혀 알지 못합니다. 이것은 훌륭한 일을하는 것이 아니라 표준을 준수하는 것입니다.

위에 링크 된 저장소는 원래 포트이며 XML 노드 트리를 생성하는 기본 래퍼를 포함합니다. CsQuery 버전 1.3 이상에서는이 파서를 사용합니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.