본문 바로가기
프로젝트 & 실습/VarChar_JSP_ver_Proj

[프로젝트] 리스너 서블릿을 활용한 데이터 크롤링

by hhyyyjun 2023. 1. 8.

java만을 이용한 데이터 크롤링

https://hhyyyjun.tistory.com/238

 

[프로젝트] 데이터 크롤링(img 부분 업데이트)

프로젝트에 사용될 데이터를 크롤링하기 위해 여러 중고차 사이트를 참고하였음 but 대부분의 사이트에서 크롤링 시 크롤링을 못하게 막아두었고, 보배드림 중고차 사이트에서 유일하게 가능하

hhyyyjun.tistory.com

 

앞서 데이터 크롤링을 Java로 먼저 진행해보았다.

프로젝트에는 웹 실행 시 크롤링을 진행하여 데이터를 받아올 예정이므로 리스너 서블릿을 활용하였다.

리스너 설정

웹 어플리케이션이 실행될 때 서블릿이 감지하고 동작하여 크롤링 메서드 실행

형광펜 - DB에 크롤링 데이터가 존재하는지 확인(바로 밑에 관련코드)

DB에 데이터가 존재하는지 확인

 final String sql_sample = "SELECT COUNT(*) AS CNUM FROM CAR";

//샘플데이터 확인 메서드
public boolean hasSample(CarVO vo) {
	      conn = JDBCUtil.connect();
	      try {
	         pstmt = conn.prepareStatement(sql_sample);
	         ResultSet rs = pstmt.executeQuery();
	         rs.next();
	         int cnum = rs.getInt("CNUM");
	         if (cnum >= 1) { //데이터가 1개 이상 존재한다면
	            return true;
	         }
	         return false;
	      } catch (SQLException e) {
	         e.printStackTrace();
	         return false;
	      } finally {
	         JDBCUtil.disconnect(pstmt, conn);
	      }
	   }

sql문 Count 를 사용하여 개수 확인한다.

웹으로 확인

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>크롤링 시작</h1>

<c:forEach var = "v" items="${datas}">
상품 제목 : ${v.ctitle}<br>
상품 설명 : ${v.csubtitle}<br>
연식 : ${v.cyear}<br>
연료 : ${v.cfuel}<br>
주행거리 : ${v.ckm}<br>
가격 : ${v.cprice}<br>
지역 : ${v.ccity}<br>
이미지 url : ${v.cimg}<br>
<hr>
</c:forEach>
</body>
</html>

JTSL 라이브러리를 사용하여 출력해보았고, 웹에 데이터가 제대로 출력되는 것을 확인하였다.

 

댓글