켜놔야 하는 것
1. 플젝 주제
- 카페탐색
- 탐색 지역은 대전
- 처음엔 전국으로 할까 하다가, 일단 대전으로 좁게 잡았고 추후에 프로젝트 진행상황에 따라 지역을 확대 시키고싶은 마음도 있음
2. 플젝 주제 선정 이유
- 원하는 분위기나 시설의 카페를 찾고싶은데,
- 네이버지도에서 검색된 카페들을 일일히 들어가서 분위기를 사진으로 봐야하고 시설이 어떤지 봐야하는 번거로움이 있음.
- 그래서 원하는 지역/분위기/시설을 검색필터 버튼으로 클릭하면 필터링해서 보여지는 기능을 구현하고 싶었음.
3. 플젝 메인 기능 (플젝으로 직접 보여주기)
🔹 '메인' 페이지 (피그마도 보여주기)
- 날씨에 따라 카페 추천검색어를 표시해주고, 카페를 추천해줌
- 기온에 따라 사진과 문구도 바뀜 (피그마)
- 면담때 카페탐색을 프로젝트로 하고싶고 기능을 이렇게 넣고싶다고 말씀드리니, F인척 하는 T를 구현하면 좋을 것 같다고하신부분이 공감이 많이 됐음
- 카페 추천은, 설문조사를 통해 150분의 참여 결과를 토대로 특정 날씨에 방문하고싶은 카페를 선정하여 추천해줌
🔹 '카페찾기' 페이지
🔹 '나의 찜' 페이지
🔹 대부분의 기능들을 구현 하기전 해야 했던 '크롤링' (62일차)
- 위의 기능들을 구현하기 위해서는 크롤링으로 네이버지도에서 검색되는 카페들의 데이터를 긁어오는게 우선이었음
셀레늄을 사용해서 크롤링
- 제이숲 : 정적인 웹페이지 크롤링에 좋음
- 셀레늄 : 동적인 웹페이지 크롤리에 좋음
- 네이버지도 동적웹페이지 -> 셀레늄 선택
- 처음에 다른 사이트완 다르게 네이버지도 크롤링이 쉽지않아서 카카오지도를 해와야하나 잠시 고민도 했지만 카카오지도엔 사진이 영업시간 정보같은게 안나와있는 업체도 많았다. 무조건 어떻게해서든 네이버지도를 해결했어야했고 1주일정도 걸렸다.
네이버지도 켜서 보여주기
- 네이버 지도 -> 동적 페이지 -> 많은 프레임들이 존재
- 카페 리스트가 나오는 부분 / 카페 정보가 나오는 프레임이 다름
click() 함수
- 네이버 지도에서 동적으로 클릭하는 이벤트를 발생시켜 프레임을 띄워서 html을 가져와야함
- 영업시간 프레임 내에서 영업시간'도' click 함수 사용해야했음
4. 기능 구현 중 문제상황
🧡 이미지크롤링 (63일차)
- 카페 이미지url 크롤링 로직 구현
- NoSuchElementException
- 해당 요소를 찾지 못함
- 왜?
- 추측 1 : 프레임간 이동이 제대로 이루어지지 않나?
- 프레임간 이동할 수 있는 함수 다시
- 아니였음
- 분석
- img src가 아니라 style 속성에 IMG URL 들어가있었음!
- style 속성가져오는 함수
- 그걸 파싱 하여 url만 뽑아내는 메서드 -> 해결
🧡 10개씩만 크롤링해오는 문제 (62-63일차)
- 자바스크립트를 사용하여 동적으로 스크롤링
- 네이버에서 제한
- 아직 해결 못했음
- 크롤링을 여러번
🧡 db에 이미지 url 5개를 _담지 못하고 에러 발생 (64일차)
- 어떤 카페는 대표 이미지가 5개가 안돼서 안됨
- switch 문 사용하여 해결
🧡 여러번 크롤링 시 카페가 DB에 중복으로 담기는 문제 (64일차)
- INSERT하기 전에, 중복여부를 체크하는 함수
- 없으면 INSERT
- 있으면 INSERT 하지마
🧡 결국 원하는 데이터들을 모두 db에 담을 수 있게 됨 (64일차)
🧡 크롤링시점 ? (65일차)
-
beforeActionInterceptor
-
접속이 1분
-
셀레늄의 단점 -> 속도
-
데이터를 미리 크롤링
- 정기업데이트 -> 특정시간마다
- 스프링에 있는 schedule 어노테이션 (예정)
🧡 크롤링 할때마다 크롤링 브라우저가 뜨는 문제 (보여주기)
- 드라이버 옵션 중에 headless 옵션 X
- 해결을 못했지만 좀 더 연구해볼 예정
🧡 크롤링 보여주고 -> db 담긴거 확인시켜주고 -> 카페 검색 페이지 보여주고
5. 구현 예정인 기능들
- 크롤링하느라 아직 구현 못한 것들이 많음
- 크롤링 해왔으니, 기능 구현은 이제 본격적으로 시작이라고 보면 됨
- 필터버튼
- 메인페이지 카페 추천기능
- 날씨에 따라 바뀌는 사진/문구/추천검색어
6. 발표 마무리 하기 전 질문