코딩/JSP
#1 JSP- jsoup 크롤링
NTART
2020. 7. 29. 07:38
파이썬에 BeautifulSoup이 있다면 자바에는 jsoup 웹 크롤러가 있다.
1. 세팅
https://jsoup.org/download 에서 라이브러리를 다운받아
lib 폴더안에 넣어줘야 한다.
<%@ page import="org.jsoup.Jsoup" %>
<%@ page import="org.jsoup.nodes.Document" %>
<%@ page import="org.jsoup.nodes.Element" %>
<%@ page import="org.jsoup.select.Elements" %>
그리고 위 네 문장을 import 해주면 jsp에서 jsoup 사용이 가능해진다.
2. 페이지 탐색
네이버에서 정보처리기사를 검색하면 일정표가 나온다. 이 부분을 크롤링해 볼 것이다.
하위로 까내려가 보면, 해당 class 부분을 찾을 수 있다.
파싱할 내용들은 예상대로 td 속성 안에 들어있는 것을 확인할 수 있다.
그리고 파싱할 필요가 없어보이는 알림 부분(네이버 알림 기능)의 class도 확인하였다.
3. 코드 작성
<%
Document doc = Jsoup.connect("https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC").get();
// 파싱할 사이트를 적어, 모든 태그를 가져온다.
Elements posts = doc.body().getElementsByClass("sc cs_language_test _sc_language_test");
// sc cs_language_test _sc_language_test속성의 모든 태그를 가져온다.
int i=0;
for(Element e : posts.select("td:not(.align_center)")){
//td 속성 요소값들을 반복해서 출력(td속성 갯수만큼), :not을 통해 align_center class의 td 요소는 제외 (알림 부분)
out.println(e.text());
out.println("|"); //복잡해져 구분을 위함
i++;
if(i==2){
out.println("<br>"); //마찬가지로 문자열을 다듬어주었다.
i=0;
}
}
%>
cf) class는 . id는 #
웹페이지에 크롤링된 값들이 출력되는 모습을 볼 수 있다.
테이블을 만들어 크롤링한 값들을 쏙쏙 넣게끔 정리하였다.