[java] 어떤 HTML 파서가 최고입니까? [닫은]

나는 많은 파서를 코딩한다. 지금까지 파싱 및 브라우저 자동화를 위해 HtmlUnit 헤드리스 브라우저를 사용하고있었습니다.

이제 두 작업을 분리하고 싶습니다.

내 작업의 80 %가 구문 분석과 관련되어 있기 때문에 HtmlUnit에서 페이지를 먼저로드 한 다음 소스를 가져 와서 구문 분석하는 데 많은 시간이 걸리기 때문에 간단한 HTML 파서를 사용하고 싶습니다.

어떤 HTML 파서가 가장 좋은지 알고 싶습니다. 파서가 HtmlUnit 파서에 가까울수록 더 좋습니다.


편집하다:

기껏해야 최소한 다음 기능을 원합니다.

  1. 속도
  2. “id”또는 “name”또는 “tag type”으로 HtmlElement를 쉽게 찾을 수 있습니다.

더러운 HTML 코드를 청소하지 않으면 괜찮습니다. HTML 소스를 정리할 필요가 없습니다. HtmlElements를 이동하고 데이터를 수집하는 가장 쉬운 방법이 필요합니다.



답변

자체 플러그 : 방금 새로운 Java HTML 파서를 출시했습니다 : jsoup . 나는 그것이 당신이 후에 할 일을 할 것이라고 생각하기 때문에 여기에 언급합니다.

파티 트릭은 다음과 같은 요소를 찾기위한 CSS 선택기 구문입니다.

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Elements links = doc.select("a");
Element head = doc.select("head").first();

자세한 정보는 Selector javadoc을 참조하십시오.

이것은 새로운 프로젝트이므로 개선을위한 아이디어는 매우 환영합니다!


답변

지금까지 본 최고의 것은 HtmlCleaner입니다 .

HtmlCleaner는 Java로 작성된 오픈 소스 HTML 파서입니다. 웹에서 발견되는 HTML은 일반적으로 더럽고 형식이 잘못되어 추가 처리에 적합하지 않습니다. 그러한 문서를 심각하게 소비하려면 먼저 엉망을 정리하고 태그, 속성 및 일반 텍스트로 순서를 가져와야합니다. 주어진 HTML 문서에서 HtmlCleaner는 개별 요소를 재정렬하고 올바른 형식의 XML을 생성합니다. 기본적으로 대부분의 웹 브라우저가 문서 객체 모델을 만들기 위해 사용하는 유사한 규칙을 따릅니다. 그러나 사용자는 태그 필터링 및 균형 조정을위한 사용자 정의 태그 및 규칙 세트를 제공 할 수 있습니다.

HtmlCleaner를 사용하면 XPath를 사용하여 모든 요소를 ​​찾을 수 있습니다.

다른 HTML 파서는 이 SO 질문을 참조하십시오 .


답변

HTML5 파싱 알고리즘을 기반으로 Validator.nu의 파서를 제안 합니다. 2010-05-03부터 Mozilla에서 사용되는 파서입니다.


답변