HTML은 웹의 핵심입니다. JavaScript, JSP, PHP, ASP 또는 기타 웹 기술에 의해 동적으로 생성되었는지 여부에 관계없이 인터넷에서 보는 모든 페이지는 HTML입니다. 브라우저가 HTML을 구문 분석하여 렌더링합니다. 하지만 Java 프로그램에서 HTML 문서를 직접 구문 분석하고 특정 요소, 태그, 속성을 찾거나 특정 요소가 존재하는지 확인해야 한다면 어떻게 해야 할까요? 수년 동안 Java로 프로그래밍을 했다면 XML 구문 분석을 시도하고 DOM 또는 SAX와 같은 구문 분석기를 사용해 봤을 것입니다. 그러나 HTML 구문 분석 작업은 한 번도 해본 적이 없을 가능성이 높습니다. 더욱 아이러니한 점은 Java 애플리케이션에서는 HTML 문서를 구문 분석해야 하는 경우가 거의 없으며 여기에는 서블릿이나 기타 Java WEB 기술이 포함되지 않는다는 것입니다. 더 나쁜 점은 JDK 코어에 HTTP나 HTML 라이브러리가 포함되어 있지 않다는 것입니다. 적어도 저는 그런 라이브러리에 대해 모릅니다. 이것이 HTML 파일을 구문 분석할 때 많은 Java 프로그래머가 먼저 Google에서 Java에서 HTML 태그를 추출하는 방법을 확인해야 하는 이유입니다. 이러한 필요성이 있었을 때 이를 달성할 수 있는 오픈 소스 라이브러리가 있을 것이라고 믿었지만 JSoup만큼 멋지고 완전한 기능을 갖춘 라이브러리가 있을 것이라고는 예상하지 못했습니다. HTML 문서 읽기 및 구문 분석을 지원할 뿐만 아니라 HTML 파일의 모든 요소와 해당 속성 및 CSS 속성을 추출하고 수정할 수도 있습니다. JSoup을 사용하면 HTML 문서로 거의 모든 작업을 수행할 수 있습니다. Google 홈페이지나 Java의 URL에서 HTML 파일을 다운로드하고 구문 분석하는 방법의 예를 살펴보겠습니다.
JSoup 라이브러리란 무엇입니까?
Jsoup은 실제 애플리케이션에서 HTML을 처리하는 데 사용할 수 있는 오픈 소스 Java 라이브러리입니다. DOM, CSS 및 jquery 스타일 방법의 장점을 최대한 활용하여 데이터 추출 및 수정을 위한 매우 편리한 API를 제공합니다. Jsoup는 WAHTWG HTML5 사양을 구현하며 HTML에서 구문 분석하는 DOM은 Chrome 및 Firefox와 같은 최신 브라우저에서 구문 분석하는 것과 정확히 동일합니다. Jsoup 라이브러리의 유용한 기능은 다음과 같습니다.
1.Jsoup는 URL, 파일 또는 문자열에서 HTML을 얻고 구문 분석할 수 있습니다.
2.Jsoup은 DOM 순회 또는 CSS 선택기를 사용하여 데이터를 찾고 추출할 수 있습니다.
3. Jsoup를 사용하여 HTML 요소, 속성 및 텍스트를 수정할 수 있습니다.
4.Jsoup은 XSS 공격을 방지하기 위해 안전한 화이트리스트를 통해 사용자가 제출한 콘텐츠가 깨끗한지 확인합니다.
5.Jsoup에서는 깔끔한 HTML도 출력할 수 있습니다.
Jsoup은 정확하고 유효한 HTML은 물론 불완전하고 유효하지 않은 태그 컬렉션을 포함하여 실제 생활에 나타나는 모든 종류의 HTML을 처리하도록 설계되었습니다. Jsoup의 핵심 경쟁력 중 하나는 견고함입니다.
Java에서 HTML 구문 분석을 위해 Jsoup 사용
이 Java HTML 구문 분석 튜토리얼에서는 Jsoup을 사용하여 Java에서 HTML을 구문 분석하고 탐색하는 세 가지 다른 예를 살펴보겠습니다. 첫 번째 예에서는 내용이 Java의 문자열 리터럴로 구성된 태그인 HTML 문자열을 구문 분석합니다. 두 번째 예에서는 웹에서 HTML 문서를 다운로드하고, 세 번째 예에서는 구문 분석을 위해 HTML 샘플 파일 login.html을 로드합니다. 이 파일은 HTML 문서의 예이며, 양식이 포함된 본문 내부에 제목 태그와 div 태그가 포함되어 있습니다. 여기에는 사용자 이름과 비밀번호를 얻기 위한 입력 태그와 다음 단계를 위한 제출 및 재설정 버튼이 있습니다. 정확하고 유효한 HTML입니다. 즉, 모든 태그와 속성이 올바르게 닫혀 있습니다. 다음은 샘플 HTML 파일입니다.
다음과 같이 코드 코드를 복사합니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<머리>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>로그인 페이지</title>
</head>
<본문>
<div 아이디="로그인" >
<form action="login.do">
사용자 이름: <input id="username" type="text" /><br>
비밀번호 : <input id="password" type="password" /><br>
<입력 id="제출" 유형="제출" />
<입력 id="reset" 유형="reset" />
</form>
</div>
</body>
</html>
Jsoup을 사용하여 HTML을 구문 분석하는 것은 매우 간단합니다. 정적 메소드인 Jsoup.parse()를 호출하고 HTML 문자열을 전달하기만 하면 됩니다. Jsoup은 문자열, 파일, URI, URL, 심지어는 InputStream에서도 HTML 파일을 읽을 수 있는 여러 오버로드된 구문 분석() 메서드를 제공합니다. UTF-8 인코딩이 아닌 경우 HTML 파일을 올바르게 읽을 수 있도록 문자 인코딩을 지정할 수도 있습니다. 다음은 Jsoup 라이브러리의 HTML 구문 분석 방법의 전체 목록입니다. pars(String html) 메소드는 입력 HTML을 새 문서로 구문 분석합니다. Jsoup에서 Document는 Element에서 상속되고, Element는 Node에서 상속됩니다. 동일한 TextNode는 Node에서도 상속됩니다. null이 아닌 문자열을 전달하는 한 성공적이고 의미 있는 구문 분석을 얻을 수 있으며 헤드 및 본문 요소가 포함된 문서를 얻을 수 있습니다. 이 Document를 얻으면 Document와 해당 상위 클래스인 Element 및 Node에서 적절한 메소드를 호출하여 원하는 데이터를 얻을 수 있습니다.
HTML 문서를 구문 분석하는 Java 프로그램
다음은 HTML 문자열, 인터넷에서 다운로드한 HTML 파일, 로컬 파일 시스템의 HTML 파일을 구문 분석하는 완전한 Java 프로그램입니다. Eclipse IDE나 기타 IDE 또는 명령을 사용하여 이 프로그램을 실행할 수 있습니다. Eclipse에서는 매우 간단합니다. 이 코드를 복사하고 새 Java 프로젝트를 만든 다음 src 패키지를 마우스 오른쪽 버튼으로 클릭하고 붙여넣으면 됩니다. Eclipse는 동일한 이름을 가진 올바른 패키지와 Java 소스 파일을 생성하므로 작업 부하가 최소화됩니다. Java 샘플 프로젝트가 이미 있는 경우 한 단계만 필요합니다. 다음 Java 프로그램은 HTML 파일을 구문 분석하고 탐색하는 세 가지 다른 예를 보여줍니다. 첫 번째 예에서는 HTML 콘텐츠가 포함된 문자열을 직접 구문 분석하고, 두 번째 예에서는 URL에서 다운로드한 HTML 파일을 구문 분석하고, 세 번째 예에서는 로컬 파일 시스템에서 HTML 문서를 로드하여 구문 분석합니다. 구문 분석 메소드는 태그 값이나 속성 값을 추출하기 위해 쿼리할 수 있는 Document 객체를 얻기 위해 첫 번째와 세 번째 예제 모두에서 사용됩니다. 두 번째 예에서는 URL 연결을 생성하고 HTML을 다운로드하여 구문 분석하는 Jsoup.connect 메서드를 사용합니다. 이 메소드는 또한 후속 쿼리에 사용될 수 있고 태그 또는 속성 값을 얻는 데 사용할 수 있는 문서를 반환합니다.
다음과 같이 코드 코드를 복사합니다.
import java.io.IOException;
org.jsoup.Jsoup 가져오기;
org.jsoup.nodes.Document 가져오기;
org.jsoup.nodes.Element 가져오기;
/**
[*] Jsoup 라이브러리를 사용하여 파일에서 HTML 문서를 구문 분석/읽는 Java 프로그램입니다.
[*] Jsoup는 Java 개발자가 HTML을 구문 분석할 수 있는 오픈 소스 라이브러리입니다.
[*] 파일 및 요소 추출, 데이터 조작, DOM, CSS 및
[*] JQuery와 유사한 메소드.
[*]
[*] @author Javin Paul
[*]/
공개 클래스 HTMLParser{
공개 정적 무효 메인(문자열 인수[]) {
// JSoup 라이브러리를 사용하여 HTML 문자열을 구문 분석합니다.
문자열 HTMLSTRing = "<!DOCTYPE html>"
+ "<html>"
+ "<머리>"
+ "<title>JSoup 예</title>"
+ "</head>"
+ "<본문>"
+ "|[b]HelloWorld[/b]"
+ ""
+ "</body>"
+ "</html>";
문서 html = Jsoup.parse(HTMLSTRing);
문자열 제목 = html.title();
문자열 h1 = html.body().getElementsByTag("h1").text();
System.out.println("JSoup에 HTML 문자열을 입력하세요:" + HTMLSTRing);
System.out.println("파싱 후 제목 : " + title);
System.out.println("파싱 후 제목 : " + h1);
// JSoup 예제 2 - URL에서 HTML 페이지 읽기
문서 문서;
노력하다 {
doc = Jsoup.connect("http://google.com/").get();
제목 = doc.title();
} 잡기(IOException e) {
e.printStackTrace();
}
System.out.println("Jsoup는 URL에서 HTML 페이지를 읽을 수 있습니다. 제목: " + title);
// JSoup 예제 3 - Java에서 HTML 파일 구문 분석
//Document htmlFile = Jsoup.parse("login.html", "ISO-8859-1") // 잘못되었습니다.
문서 html파일 = null;
노력하다 {
htmlFile = Jsoup.parse(new File("login.html"), "ISO-8859-1");
} 잡기(IOException e) {
// TODO 자동 생성된 캐치 블록
e.printStackTrace();
} // 오른쪽
제목 = htmlFile.title();
요소 div = htmlFile.getElementById("login");
String cssClass = div.className(); // HTML 요소에서 클래스 가져오기
System.out.println("Jsoup은 HTML 파일을 직접 구문 분석할 수도 있습니다.");
System.out.println("제목 : " + 제목);
System.out.println("div 태그 클래스 : " + cssClass);
}
}
산출:
다음과 같이 코드 코드를 복사합니다.
JSoup에 HTML 문자열 입력:<!DOCTYPE html><html><head><title>JSoup 예제</title></head><body><table><tr><td><h1>HelloWorld</h1> </tr></table></body></html>
구문 분석 후 제목: JSoup 예
구문 분석 후 제목: HelloWorld
Jsoup는 URL에서 HTML 페이지를 읽을 수 있습니다. 제목: Google
Jsoup는 HTML 파일 제목을 직접 구문 분석할 수도 있습니다. 로그인 페이지
div 태그 클래스: 단순
Jsoup의 장점은 매우 강력하다는 것입니다. Jsoup HTML 파서는 HTML의 형식이 올바른지 여부에 관계없이 제공한 HTML을 최대한 깔끔하게 구문 분석합니다. 닫히지 않은 태그(예: Java <p>Scala에서 <p>JavaScala로), 암시적 태그(예: |Java is Great로 포장됨)와 같은 오류를 처리할 수 있으며 항상 문서 구조(HTML)로 출력을 생성할 수 있습니다. 머리와 몸을 포함하며 올바른 요소만 머리에 포함됩니다. 이것이 Java에서 HTML이 구문 분석되는 방식입니다. Jsoup는 HTML 문서, 본문 조각, HTML 문자열을 읽고 웹에서 직접 HTML 콘텐츠를 구문 분석하는 것을 매우 간단하게 해주는 훌륭하고 강력한 오픈 소스 라이브러리입니다. 이 기사에서는 첫 번째 예에서 제목과 H1 태그의 값을 텍스트로 추출한 것처럼 Java에서 특정 HTML 태그를 가져오는 방법을 배웠고, 세 번째 예에서는 CSS 속성 추출을 통해 이를 가져오는 방법을 배웠습니다. HTML 태그에서 속성 값을 가져옵니다. 강력한 jQuery 스타일의 html.body().getElementsByTag("h1").text() 메서드 외에도 임의의 HTML 태그를 추출할 수 있으며 Document.title() 및 Element.className( ) 편리한 방법으로 제목과 CSS 클래스를 빠르게 얻을 수 있습니다. 여러분이 JSoup을 재미있게 즐겨보시길 바라며 곧 이 API의 더 많은 예를 살펴보겠습니다.