새해엔 복좀 많이 받자라고 속으로 바랬는데 일복이 터졌다!!

새해를 맞이하여 진행하고 있던 프로젝트 때문에 웹 크롤러 개발 시작. 구글링을 통해 phantomjs, casperjs 등등 많은 언어들을 조사해봤다.

python으로 할까 casperjsㄹ로 할까 java로 할까 고민하던 중에 현재 같이 프로젝트를 진행하는 다른 개발자들을 위해 java를 이용하기로 결정.

java의 jsoup 라이브러리를 사용하기로 했다.

jsoup 라이브러리는 HTML을 파싱할 수 있는 라이브러리로 HTML문서를 URL이나 파일, 문자열 형태로 전달해서 파싱할 수 있다.

또한, DOM, CSS, jQuery와 유사한 메소드들을 사용할 수 있어서 편리하다.


 

한번에 완벽한 웹 크롤러를 만들기에는 무리가 있다 판단하여

1차적으로 특정 URL에 접근하여 원하는 정보만을 추출하는 java 소스를 개발해 볼 것이다.

jsoup connect를 사용하여 URL에 접근하고, 웹 페이지의 HTML 태그를 검색하여 원하는 정보가 담긴 태그안에 내용을 문자열로 받아오게 된다.

그 후 문자열의 내용을 특정 형식에 맞게 정리 저장하게 되는 식이다.(너무 뜬구름 잡는 말인가..)

사실 최종적으로 필요한 것은 특정한 URL 한곳만 접근하는 것이 아니라 내가 원하는 정보(키워드)를 담고 있는 모든 웹 페이지에 접근하여 내용을 정리,

저장하는 것인데.. 특정 페이지에 있는 웹 정보만을 우선 갖고와보자는 것이 목표이다.


 

우선, 개발을 위해 jsoup 라이브러리를 다운받는다. http://jsoup.org/ <- 이곳에서 다운가능

그런 다음 자신의 java 프로젝트에 위에서 다운받은 jsoup 라이브러리를 추가한다.

가장 기본적인 특정 url에 연결하여 태그 값들을 불러와 보는 것을 먼저 해보겠다. 다음은 간단한 예이다.

Document doc = Jsoup.connect("http://news.naver.com/main/hotissue/dailyList.nhn?&date=20150101&page=1").get();
Elements el = doc.select("div.list_body ul li");

네이버 뉴스에 연결하여 뉴스 목록을 받아왔다. 그 후 각 페이지에 접근하여 기사 본문 내용만을 읽어왔다.

 

실행결과는 다음과 같다.

 

 

 

우선 1차적으로는 성공적인 것 같다. 하지만, 아직 갈길이 멀다는거ㅠㅠ

 

페이지 네비게이션과 각기 다른 태그 구조를 갖고 있는 웹페이지 덕분에 범용적으로 사용할 수 있는 알고리즘을 생각해봐야 한다는

 

큰 문제가 남아 있다. 연초부터 신.난.다.

+ Recent posts