2016년 병.신.년. 을 맞이하여 여자친구와 급 나들이 제부도 다녀옴.

31일까지 일을하는 개발자 커플...일끝나고 바로 근처 바다나 보고 오자고 해서 가까운 제부도로 다녀왔다.

오랜만에 온 곳인데 변한게 하나도 없이 조용하고 한적한..평화로운(?) 느낌이었다.

한가롭게 낚시를 즐길 수도, 친구들과 자전거를 타기도 좋고 무엇보다 날씨가 좋아서 만족.

한해 시작하면서 이것저것 일들이 많은데 안좋은건 훌훌 털어버리고 힘차게 2016년 시작해 보자!

 

 

 

 

 

 

 

 

 

 

 

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

새해를 맞이하여 진행하고 있던 프로젝트 때문에 웹 크롤러 개발 시작. 구글링을 통해 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차적으로는 성공적인 것 같다. 하지만, 아직 갈길이 멀다는거ㅠㅠ

 

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

 

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

업무를 진행하면서 흔히들 말하는 노가다(?)를 할때가 많다.. 대표적인 것이 서류정리!!

얼마전 엑셀을 정리하다가 몇천, 몇만개가 되는 데이터들의 압박을 못이겨 쉽게 할 수 있는 방법을 찾아본 적이 있었는데 그래서 시도해본것이 Java를 이용한 POI라이브러리 사용!

POI는 아미크로 아파치 파일 포맷을 자바를 이용하여 읽고, 쓸 수 있게 해주는 라이브러리이다. 여타 다른 라이브러리들과 마찬가지로 쓰는 방법은 간단하다.

일단 http://poi.apache.org/download.html 에 가서 라이브러리 파일을 다운로드 받고, 자신의 자바 프로젝트에 추가한다.

API 참고 : https://poi.apache.org/apidocs

개발자들을 위해 http://poi.apache.org/spreadsheet/quick-guide.html (예제, 영어로......)

예제를 참고하여 이곳저곳 뜯어고쳐서 만든 툴은 원본소스(엑셀을 기준으로 설명)에 있는 데이터를 읽어서 새로운 타겟소스에 복사하는 식이다.

이때 단순히 복사만하면 툴을 만든 의미가 없으니, 새로운 타겟 엑셀에는 셀서식을 비롯한 디자인들을 바꿔주고(필요로하는 새로운 양식에 맞게끔)

원본소스에 있는 수식의 결과도 값만 계산하여 그 내용을 읽어 온다.(그냥 복사를 하게되면 수식의 결과가 아닌 수식을 통째로 복사하게 됨ㅠ)

아래의 소스가 작업한 내용이다.

 

아직 허접한 부분이 있지만 사용하면서 업데이트를 해나갈 생각이다.

 

+ Recent posts