jsoup로 크롤링 해보기!!

스프링에서 jsoup를 이용해 크롤링 하는방법에

대해 알아보자. 먼저 크롤링이란 크롤링 혹은 스크레이핑

이라고 하며 어떠한 웹 페이지의 데이터를 추출해내는 행위이다.


주로 파이썬에서 많이 사용한다고들 하는데

난 spring 에서 jsoup 라이브러리를 이용해

크롤링을 해보겠다.


먼저 추출할 웹 페이지를 정한다. 예제를 위해

난 내 블로그를 메인화면의 글 제목들을 추출하려했지만

이상하게 내 블로그와 connect가 되지않아


그냥 네이버로 했다.

오늘저녁 아시안게임 남자 축구

대한민국 : 이란 의 경기가 있으므로


네이버의 국내축구 사이트의 주요뉴스를 한번 크롤링 해보자.


먼저 크롤링을 위해 pom.xml 에서 jsoup 메이븐을 추가해주자.



이제 소스코딩을 해보자.

난 좌측 left메뉴에서 크롤링 탭을 누르면 아래의

crawling.do가 실행되게 만들었다.


url값은 네이버의 국내축구 사이트 url이다


url로 파싱할 웹 페이지를 정하고 connect를 사용해

데이터를 가져온다. 그리고 각각의

select문을 사용해서 필요한 데이터를 추출해서 출력하면 된다.


위처럼 만들고 실행했을때 콘솔창에 아래

이미지와 같이 저런(?) 것들이 뜬다면 정상적으로 한것이다.






이제 내가 뽑고 싶은 데이터를 뽑으면 된다.

이때 DOM탐색을 할줄 아는 사람이라면 좀더 이해가기도 쉽고

사용하기도 쉬울 것이다.



먼저 소스를 보고 사용과정을 알아보자.





아래는 네이버 국내축구 사이트의 주요뉴스 탭이다.

이 부분들을 크롤링 해보자.

먼저 크롬의 개발자도구를 사용하는것이 편하다.



해당 사이트에서 F12를 눌러 크롬 개발자도구를 킨 후

아래와 같은 표시 부분을 누른후


주요 뉴스 부분을 클릭하자.



그럼 개발자도구 부분에 아래 이미지 처럼

해당 부분이 표시된다.



위 에서 표시된 부분이 doc.select("div.home_news")

에 해당한다.





이제 주요뉴스 탭의 이름과 주요뉴스의 제목들을

추출 할건데. 탭 이름은 element.select("h2").text(); 로 추출했다.



<div class="home_news"> 태그 바로밑의

<h2>태그에 이름이 있기 때문에

element.select("h2").text();를 사용한다.


다음 주요 뉴스들을 크롤링 할 것이다.


글 내용은 for문을 사용해야 한다. 줄이 많기 때문이다.





아래와 같이 for 문을 이용해 li태그를 빼서 출력한다.



아래는 정상적으로 작동했을때의 콘솔 창이다.



위 부분에서 주요뉴스AiRS추천 Beta 부분을 

깔끔하게 주요뉴스 부분만 추출하고 싶다면 substring()을 사용하면된다





'SPRING' 카테고리의 다른 글

토비의 스프링 (1)  (0) 2018.12.18
토비의 스프링 구매  (0) 2018.10.14
다음 우편번호 API 사용하기  (0) 2018.07.10
ajax에서 JSON.parse(), JSON.stringify() 마스터하기  (0) 2018.07.03
JsonUtil에 JsonToMap 사용하기  (0) 2018.07.03

댓글

Designed by JB FACTORY