C # 프로그래머 용 웹 스크래핑 (HTMLAgilityPack 또는 Python + beautifulsoup)을위한 더 나은 옵션

beautifulsoup c# html-agility-pack python

문제

저는 .NET 프로그래머입니다. 웹 스크래핑 프로젝트에서 작업해야합니다. HTMLAgilityPack 대 BeautifulSoup에 대한 아이디어를 얻고 싶습니다.

많은 사람들은 BeautifulSoup이 HTMLAgilityPack보다 훨씬 뛰어나다 고 말합니다. 하지만이를 위해서는 파이썬을 배워야합니다.

그래서 제 질문은 Python과 BeautifulSoup을 배우거나 C #과 HTMLAgilityPack을 계속 사용하는 것이 합리적입니까?

어떤 다른 제안도 환영합니다.

수락 된 답변

C # .NET 세계에서는 매우 유연하기 때문에 HTMLAgilityPack을 권하고 싶습니다. 제대로 구성된 XML 인 것처럼 잘못 구성된 HTML을 조작 할 수 있으므로 XPath를 사용하거나 노드를 반복 할 수 있습니다.

BeautifulSoup는 HTML 스크래핑을위한 좋은 방법이지만 개발자 관점에서 완전히 새로운 기술을 직접 습득하는 것은 쉽지 않습니다. 그래서 당신이 .NET 사람이라면 HTMLAgilityPack을 강력히 추천 할 것입니다.

HTML Agility Pack , 정규 표현식 및 XDocument (LINQ -> XMLy stuff)의 조합으로 큰 성공을 거둘 수 있습니다.

LINQ와 lambda (파트 3) - HTML 민첩성 팩 은 Vijay Santhanam의 블로그 게시물로 나를 푹 빠져 들었습니다.


인기 답변

내가 만든 라이브러리 인 CsQuery 는 Html Agility Pack의 비교적 새로운 대안입니다. 다음과 같은 이점을 제공합니다.

  • 대부분의 사람들은 이미 익숙하고 xpath보다 훨씬 쉽고 이미 클라이언트를 코딩 한 것과 같은 방식으로 CSS3 선택기 지원을 완료하십시오.
  • 같은 이유로 jQuery API
  • HTML5 호환 파서 인 validator.nu HTML 파서를 사용합니다. 이 코드베이스는 Gecko 기반 브라우저 (Firefox)에서 사용되는 것과 동일한 코드 기반으로 일반적으로 불량 / 유효하지 않은 태그에 대해서도 웹 브라우저와 동일한 DOM을 생성해야합니다.
  • 매우 큰 문서에서도 선택기를 매우 빠르게 색인화합니다. HAP는 각 선택기에 대한 전체 문서 트리를 탐색해야하므로 복잡한 선택기와 큰 문서의 경우 매우 느립니다.
  • 광범위한 단위 테스트 커버리지 - jQuery 및 Sizzle (jQuery CSS 선택 엔진)의 모든 테스트가 C #으로 포팅되었습니다.

단점 :

  • 지금은 .NET 4+ 전체 프레임 워크를 컴파일하는 반면, HAP는 대부분의 .NET 환경을 위해 빌드합니다.

nuget : Install-Package CsQuery 에서 얻을 수 있습니다.




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