Java, Spring
-
[Java/Spring] 여행지의 인스타그램 해시태그 수 크롤링Java, Spring 2024. 3. 15. 14:24
이번 포스팅은 인기여행지를 선정하는 방법에 대한 포스팅입니다. 우리의 인기여행지 기준은 아직 확실하게 정해진 건 아니지만, 지역 상관없이 T-Map 목적지 검색 건 수 10만 이상 또는 인스타그램 해시태그 수 10만 이상으로 생각하고 테스트를 진행 하였습니다. 우선 우리의 비인기 여행지의 기준(인구 소멸 위험지수 0.5 이하인 지역의 T-Map 목적지 검색 수 5000건 이상 10000건 이하)는 확정 되었으므로, 인기여행지의 될 가능성이 있는 후보들은 지역 상관 없이 T-Map 목적지 검색 건 수 1만 이상의 모든 여행지를 대상으로 필터링을 진행 하였습니다 . 이렇게 하면 인기 여행지와 비인기 여행지가 겹칠 일은 없다. T-Map 검색 건 수 1만을 기준으로 나뉘었기 때문.... 우선 한국관광 데이터랩..
-
[Java/Spring] Selenium과 Kakao Map API를 활용하여 좌표얻기Java, Spring 2024. 3. 14. 21:53
이번 포스팅에서는 카카오 맵 API를 활용하여 비인기 여행지의 위도와 경도를 얻어 최종적으로 데이터베이스에 저장하는 과정을 포스팅 하겠다. 도로명 주소가 있는 경우 해당 장소의 좌표를 얻는 건 그리 어려운 건 아니지만, 우리가 다룰 전국의 비인기 여행지는 약 1000여개이므로 이를 모두 수작업으로 한다는 건, 사실상 불가능이다. 위 과정을 자동화 해보자 먼저 이전 포스팅에서 크롤링을 통한 비인기 여행지의 데이터에는 도로명 주소가 포함되어 있다. 우리는 이 비인기 여행지 객체를 저장하기 직전에 도로명 주소롤 카카오 맵에 검색을 하고 검색 결과 중 1번에 기록 되어 있는 여행지를 클릭하도록 그리고 클릭할 경우 해당 장소의 위도와 경도를 다시 Selenium을 통해 크롤링하여 정보를 취합해 데이터 베이스에 저..
-
[Java/Spring] csv파일 Parsing하여 데이터베이스에 저장하기Java, Spring 2024. 3. 14. 16:28
이전 포스팅에서 Selenium라이브러리를 활용하여 한국관광 데이터랩으로부터 비인기 여행지의 데이터를 csv파일로 저장하였다. 이제 이 많고 많은 csv파일을 파싱하여 데이터베이스에 저장하도록 해보자! 데이터베이스는 H2를 사용하고 SpringDataJpa를 통해 객체와 데이터베이스는 매핑된다. 따라서 나는 SQL을 따로 작성할 필요 없이, 엔티티 생성하고 저장하면 데이터 베이스에 해당 데이터가 저장되게 된다! 먼저 파싱 하는 클래스를 살펴보자 public class ReadLineContext { Parser parser; public ReadLineContext(Parser parser) { this.parser = parser; } public List readByLine(String directo..
-
[Java/Spring] Selenium으로 데이터 크롤링하기Java, Spring 2024. 3. 14. 14:12
현재 진행 중인 프로젝트는 수도권 집중현상 완화를 위한 비인기 여행지 추천 플랫폼 개발이다. 위 프로젝트 진행 중 비인기 여행지의 정보를 얻어오기 위해 하국관광 데이터랩에서 제공하는 데이터들을 수집하여 데이터 베이스에 저장하기로 하였다. 우선 인구 소멸 위험지수가 0.5 이하인 지역들을 선정하고 위 지역들을 기반으로 한국관광 데이터랩에서 데이터를 검색하여 해당 관광지의 검색 건 수와 위치정보를 데이터베이스에 저장하고자 하였다. 물론 수작업을 일일히 할 수는 있지만, 이런 수작업을 줄이기 위해 프로그래밍이 존재하지 않겠는가! 그럼 바로 시작해보자! 로컬에서 진행하였고, 인구 소멸 위험지역의 여행지 정보를 저장하는 것이 목적이기에, 따로 클래스 분리는 하지 않았다. 아래 코드를 확인 해 보자. public ..
-
Spring Security와 소셜 로그인Java, Spring 2024. 3. 9. 21:07
@PostMapping("/join") public String join(@ModelAttribute User user) { System.out.println("user = " + user); String rawPassword = user.getPassword(); String encoded = passwordEncoder.encode(rawPassword); user.setPassword(encoded); user.setRole("ROLE_USER");//null이면 안댐 userRepository.save(user); return "redirect:/loginForm"; } password는 인코딩 되어야 스프링 시큐리티가 작동한다. /** * 시큐리티 설정에서 loginProcessingUrl("/..
-
HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법Java, Spring 2024. 1. 26. 14:41
클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다.** GET - 쿼리 파라미터 /url?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20 예) 회원 가입, 상품 주문, HTML Form 사용 HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, PUT, PA..