이번 프로젝트의 큰 가닥 중의 하나는 데이터 크롤링이다. 영화진흥위원회의 open API 를 사용해서 데이터를 가져올까도 고민했지만 우리가 목표한 왓챠 클론 코딩을 위해서는 크롤링해오는 것이 더 높은 싱크로율을 보여줄거라 생각했다. 또 왓챠만의 평점, 추천작 등 알고리즘을 우리가 알 수 없기 때문에 기본 정보로 가져오려고 했다. 지난 번에는 팀에 크롤링을 할 줄 아는 분이 있어서 파이썬으로 간단히 셀레니움을 사용해 데이터를 가져왔는데 이번엔 자바로 도전해보고 싶었고 스프링 배치와 스케줄러를 사용해서 주기적으로 정보를 업데이트 해보고 싶은 목표가 있었다.
데이터 크롤링을 하기 위해서 사용할 수 있는 라이브러리는 Jsoup 과 Selenium이 있다. 큰 차이로는 Jsoup은 정적 페이지를 파싱할 수 있고 Selenium은 동적 페이지를 파싱할 수 있다는 것이다. 좀 더 찾아보니 셀레니움의 원래 목적은 웹 사이트를 테스트하기 위해 개발된 것인데 봇을 만드는데 많이 사용한다고 한다. 그럼 우리는 '크롤링봇'을 만들었다고 생각해도되려나? 그도 그럴 것이 로직만 잘 구현해주면 알아서 크롬드라이버 켜서 페이지를 들어가고 데이터를 긁어오니 말이다.
주의 사항으로 크롬드라이버와 현재 설치된 크롬의 버전이 잘 맞아야하고, 내가 크롤링하고 싶은 페이지를 잘, 아주 자알 분석해보아야한다. 내가 들어가고 싶은 요소를 복사해서 .cssSelector로 잘 연결해주어야만,, 됨
근데 예기치못하게 홈페이지에 팝업창 같은게 계속 뜬다면 그 팝업창을 꺼주는 것도 꼭 추가해주어야한다. 우리같은 경우는 계속해서 한 웹툰의 팝업이 떠서 같은 이유로 한참 고민했었던 이슈가.. 있었다. (여기서 집단지성의 힘을 한 번 더 느끼고)
셀레니움을 사용하는것이 크게 어려운 것은 아닌데 그 페이지의 요소 구성이 어떻게 되어있는지 잘 파악하는게 중요하다고 생각했다. 그리고 요소를 일일히 다 찾아서 넣어줘야하니 단순 작업의 반복이라는 생각도 들었다. 아무튼 크롤링은 어찌 저찌 완료했으나 너무 많은 시간을 소요해서 다른 작업도 빨리 진행해야겠다.
https://todaycode.tistory.com/5
'T.I.L. :: Today I Learned > 항해99 14기 본과정' 카테고리의 다른 글
Day 43. 피드백은 참 좋은 것 (0) | 2023.05.15 |
---|---|
Day 42. 이제 절반 왔다. (0) | 2023.05.14 |
Day 40. 앗챠 만들기 시작! (0) | 2023.05.12 |
Day 39. 미니 프로젝트를 성공적으로 끝내다! (0) | 2023.05.11 |
Day38. 테스트 코드..... 테스트 코드....... (0) | 2023.05.10 |