주니 개발 도서관

팀 프로젝트

( 웹툰 팀 프로젝트 ) 1. 웹 크롤링 샘플데이터 확보

주니홍 2022. 7. 22. 04:43

사용한 프로그램

 

  • 이클립스

  • 자바 (JDK 11)

  • 웹 크롤링 Jsoup ( jar 파일 )

  • 오라클

 

 

 

설계조건 내용

웹툰 제목, 웹툰 이미지, 웹툰작가, 조회수
——
아아디, 비밀번호, 이름
최근 방문한 웹툰 정보 저장
——
로그인, 로그아웃, 회원가입
전체 웹툰 목록(조회수 순위로 출력)
웹툰검색시 웹툰이름, 조회수 순으로 출력가능 
검색 성공하면 조회수 +1
마이페이지
최근조회한 웹툰 정보 보기
회원탈퇴
★ 샘플데이터 크롤링

필요한 정보인 웹툰제목, 이미지값, 웹툰작가의 정보를 웹 크롤링을 이용해 샘플데이터를 확보해 보겠습니다

 

 

 

웹 크롤링 사용 및 분석방법

 

 

웹 크롤링을 이용하여 샘플데이터를 확보

크롤링을 위해 Jsoup ( jar 파일 ) 를 이용하였습니다!

기본적인 로직 설명과 Jsoup 사용방법 https://hongjuni.tistory.com/40

 

(19) 자바 Jsoup을 이용한 웹 크롤링

웹 크롤링 이란, 컴퓨터 소프트웨어 기술로 웹 사이트들에서 원하는 정보를 추출하는 것을 의미합니다 웹 크롤러 란, 인터넷에 있는 웹페이지를 방문해서 자료를 수집하는 일을 하는 프로그램

hongjuni.tistory.com

 

 

웹 크롤링 하기 위해서 타겟 웹페이지의 정보를 분석하는 방법

doc.select( 태그 경로 ) 를 이용하기 위하여 인풋값에 태그 경로를 지정해주면해당 태그의 정보를 가져온다

밑줄 ( ▼ )을 기준으로 태그의 경로를 확인 하여

" div > div >   - - - -   > a "

위의 값을 인풋값으로 넣게되면 결과값은 아래와 같습니다

마지막에 적은 a 태그의 값들을 불러옵니다

하지만, 위의 방법을 이용하면 < a > 태그 관련하여 모두 불러 오기때문에 월요 추천웹툰까지 가져오며

추천웹툰과 일반웹툰의 정보가 "중복" 되어 두개가 함께 출력되었다

 

 

 

그렇기 때문에 해당 본연의 값을 가져올수있는 방법인 Copy를 이용하였습니다

 

원하는 태그의 오른클릭 - Copy - Copy seletor로 사용하며

복사된 코드를 분석해 보겠습니다

 

#content > div.list_area.daily_img > ul > li:nth-child(1) > dl > dt > a

Copy 한 태그는 이러했고 결과는 본연의 해당값 하나를 가져올 수 있습니다

 

Copy seletor한 코드를 분석을 통해 알아보겠습니다

li:nth-child ( 정수 )

정수값을 기준으로 해당 웹툰이 순서대로 나온다는 것을 알게되었고

웹툰의 갯수를 파악한 결과 76 마지막 웹툰을 출력해 주었습니다!

 

 

그렇다면 < li > 태그에는 모든 웹툰의 이름정보를 가지고 있겠구나 생각했고

li:nth-child ( 정수 ) 에서  : nth - child ( ) 부분을 지워서 사용하여 li 만 사용해 보았습니다!

 

~

예상대로 모든 웹툰의 정보를 가져올 수 있었습니다

하지만 아까와 같이 추천웹툰이 함께 출력되지 않는 이유가 무엇일까요?

 

 

추천웹툰이 함께 뜨지않은 이유는

#content > div.list_area.daily_img > ul > li > dl > dt > a

해당 부분 때문이라고 분석하였는데

이유는 해당 태그의 위치가 아래와 같이 표시 되었기 때문입니다

 

 

div.list_area 라는걸 통해

div.list 클래스 안에있는 area 공간에서의

< a > 만을 가져올 수 있었기 때문이라고 분석을 했습니다

자세한 Copy select 코드분석 방법은 아까의 위의 링크에  확인 가능합니다

 

 

 

해당 분석을 토대로

제목, 작가, 이미지 링크를 가져왔습니다!

가져온 값을 콘솔에 출력하여 확인하기위해서

Iterator 와 while문을 통해 정보를 모두 출력해보았습니다

 

제목 . 작가 , 이미지.jpg

모두 출력되는 것을 확인 할 수 있다

 

콘솔에선 이미지를 출력할 수 없기 때문에 이미지를 표현해주는 src 값을 표현 하였고

해당 이미지.jpg는 파일 입출력을 이용하여 저장하여 HTML문을 통해 웹으로 띄워줄 수 있을 것 입니다

 

 

 

원하는 정보들을 String 값으로 깔끔하게 가져올 수 있게 되었기 때문에

JDBC를 이용하여 DB에 해당 정보들을 저장 할 수 있게 되었다!

 

'팀 프로젝트' 카테고리의 다른 글

[ Spring Shoes 프로젝트 ] 페이징처리  (0) 2022.10.14