Java

001. HTML 파싱하기 - 준비하기

top2blue 2015. 7. 29. 14:26

1. http://jsoup.org/download 을 방문하여 다운받는다.

jsoup-1.8.2.jar

2. 메이븐을 사용할 경우 pom.xml 파일의 <dependencies>에 다음을 추가한다.

1
2
3
4
5
6
7
<dependency>
  <!-- jsoup HTML parser library @ http://jsoup.org/ -->
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.8.2</version>
</dependency>
 
cs

3. 문자열 파싱

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
 
// 문자열을 입력으로 HTML파싱하기
public class Jsoup01 {
    public static void main(String[] args) {
        // 문자열
        String html = "<html><head><title>First parse</title></head>"
            + "<body><p>Parsed HTML into a doc.</p></body></html>";
        
        // Jsoup.parse를 통한 Document객체 생성
        Document doc = Jsoup.parse(html);
        
        // 텍스트만 읽기
        String textOnly = doc.text();
        
        // 출력
        System.out.println(textOnly);
    }
}

4.  HTML 문서의 일부분만 있을 경우 파싱하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
 
// HTML 문서의 일부분만 있을 경우 파싱하기
public class Jsoup02 {
    public static void main(String[] args) {
        // 문자열
        String html = "<div><p><b>HTML<u>문서</b></u>의 일부분만 있을때";
        
        Document doc = Jsoup.parseBodyFragment(html);
        Element body = doc.body();
        System.out.println("tagName() : " + body.tagName());
        System.out.println("text() : " + body.text());
        
        // 모든 자식노드
        for(Node n : body.childNodes()){
            System.out.println(n);
        }
    }
}
 
cs


5. URL에 있는 HTML 파싱하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
 
// URL에 있는 HTML 파싱하기
public class Jsoup03 {
    public static void main(String[] args) {
        
        Document doc = null;
        
        try {
 
            doc = Jsoup.connect("http://www.daum.net/").get();
            String title = doc.title();
            System.out.println(title);
 
            Element body = doc.body();
            System.out.println(body.text());
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}
 
cs

6.  파일에 있는 HTML 파싱하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.io.File;
import java.io.IOException;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
 
// 파일에 있는 HTML 파싱하기
public class Jsoup04 {
    public static void main(String[] args) {
        String fileName = "example.html";
        File file = new File(fileName);
        Document document = null;
        try {
            // Jsoup.parse(File in, String charsetName, String baseUri)
            // document = Jsoup.parse(file,"UTF-8","http://localhost:8080");
            document = Jsoup.parse(file,"UTF-8");

            String title = document.title();
            System.out.println(title);
            
            String body = document.body().text();
            System.out.println(body);
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}

cs

example.html파일을 프로젝트 폴더에 만들어 놓는다.

1
2
3
4
5
6
7
8
9
10
11
12
<!doctype html>
<html lang="ko">
 <head>
  <meta charset="UTF-8">
  <title>연습용 HTML문서</title>
 </head>
 <body>
  <h1>파일로부터 읽기</h1>
 </body>
</html>
 
cs