JAVA

[Java] 7-2강 - 네트워킹 with 자바 2 (HTML 파일 가져오는 법, jsoup)

intelligentcm 2020. 12. 7. 16:29

3. Web에 접근

1) URL로 HTML 파일에서 content를 읽어오기

이전에 배운 파일 읽기와 유사합니다. 

1> url = new URL(address);

URL 클래스를 만듭니다.

2> input = new BufferedReader(new InputStreamReader(url.openStream()));

[1] url.openstream은 InputStreamReader라는 class를 return합니다.

[2] 결과적으로 BufferedReader object를 만듭니다.

3> while부분

[1] BufferedReader의 readline 메소드 : line by line으로 컨텐츠를 읽는다.

4> try-catch문

해당 리소스(웹주소)가 없을 수도 있어서 예외문을 사용합니다.

 

2) URL로 웹페이지의 파일을 다운로드하기

1> url = new URL(address);

URL 클래스를 만듭니다.

2> in = url.openStream();

InputStream을 만듭니다.

3> out = new FileOutputStream("sogang_campus.jpg")

파일을 만들(쓸) OutputStream을 만듭니다.

 

3) HTML 파일을 parsing하기

HTML 파일을 가져오면 사실 사람이 보기 좋은 형태는 아닙니다.

이를 보기 좋게 파싱할 필요가 있습니다.

0> input = new BufferedReader(new InputStreamReader(url.openStream()));

기존에 HTML 읽던대로 BufferedReader object를 만듭니다.

1> while문

text를 line by line으로 ArrayList에 저장합니다.

 

4. jsoup으로 HTML 파일 parsing하기

0) jsoup

HTML로부터 우리가 원하는 정보를 얻어내는 외부 라이브러리

(외부 라이브러리 설치해서 이용하는 법 잘 알아두기)

 

1) jsoup을 이용한 HRML 파일 parsing (예시)

1> doc = Jsoup.connect(url).get();

jsoup을 이용해서 url을 connect하고 얻어서 Document object인 doc에 저장

[1] exception이 있을 수 있다. (그리고 아래 exception은 IOException에 포함됩니다.)

(MalformedURLException, HttpStatusException, UnsupportedMimeTypeException, SocketTimeoutException, IOException)

 

2> 각 tag를 찾아가기

 

[1] Elements bestsellers = doc.select("div.detail");

=> 전체 document에서 <div class="detail"> tag 부분을 bestsellers에 저장합니다.

(만약 20개가 있다면 20개 모두 저장합니다.)

[2] Elements titles = bestsellers.select("div.title");

=> <div class="detail"> tag 부분에서 <div class="title"> tag 부분을 titles에 저장합니다.

(만약 20개가 있다면 20개 모두 저장합니다.)

[3] Elements booktitles = titles.select("a[href]");

=> <div class="title"> tag 부분에서 <a href = "> tag 부분을 booktitles에 저장합니다.

(만약 20개가 있다면 20개 모두 저장합니다.)

 

3> boottitles의 우리가 원하는 부분 print

 

2) tab 지칭 방법