[Java] 7-2강 - 네트워킹 with 자바 2 (HTML 파일 가져오는 법, jsoup)
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 지칭 방법