1) Top3 국내숙박 예약 플랫폼의 상품들을 한 곳에 집약함으로써 쉽고 빠른 상품비교 및 예약을 돕고자 함
2) 데이터는 5분 간격으로 자동 업데이트되어 DB에 적재되며, 웹을 통해 서비스됨
(Crontab, MongoDB, Flask 사용)
- Top3 국내숙박 예약 플랫폼에 등록된 서울 내 호텔의 예약가능 객실데이터 실시간 취합
- 플랫폼 간 상품 구성은 상이하며, 동일한 상품이라도 플랫폼 간 가격 차이가 종종 존재함
- 상품 비교를 위해 유저들은 여러 플랫폼을 함께 사용하며, 타 플랫폼을 다녀왔을 때 원하는 객실이 이미 품절되어 있는 등의 불편한 사용경험 존재
- 예약가능한 객실 데이터를 한 곳에 모아 비교가능하게 함으로써, 상품비교부터 결제까지의 소요시간을 단축하고, 비교하다가 원하는 방을 놓치는 문제를 해결함으로써 더 나은 고객경험을 제공하고자 함
- 3개의 쉘스크립트 (호텔별 각 1개)를 실행하는 역할을 수행하며, 5분 주기로 실행되도록 세팅되어 있음
- 야놀자 사이트에서 호텔별 상세정보를 크롤링하여 취합한 후, MongoDB에 데이터를 적재하도록 제작됨
- yanolja.py 모듈은 호텔별 고유ID값을 가져오는 역할을 수행하며, 호텔별 고유ID는 각 호텔의 상세페이지 url 생성 시 필요
- Scrapy framework (Spider)를 사용하여 크롤링을 진행하며 items.py에 데이터를 적재하고, 적재 완료 후 pipelines.py가 실행되며 MongoDB로 데이터 전송
- 여기어때 사이트에서 호텔별 상세정보를 크롤링하여 취합한 후, Mongodb에 데이터를 적재하도록 제작됨
- 별도의 모듈은 제작하지 않음
- Scrapy framework (Spider)를 사용하여 크롤링을 진행하며 items.py에 데이터를 적재하고, 적재 완료 후 pipelines.py가 실행되며 MongoDB로 데이터 전송함
- 데일리호텔 사이트에서 호텔별 상세정보를 크롤링하여 취합한 후, Mongodb에 데이터를 적재하도록 제작됨
- dailyhotel_keys.py 모듈은 호텔별 고유ID값을 가져오는 역할을 수행하며, 호텔별 고유ID는 각 호텔의 상세페이지 url 구성 시 필요
- Scrapy framework (Spider)를 사용하여 크롤링을 진행하며 items.py에 데이터를 적재하고, 적재 완료 후 pipelines.py가 실행되며 MongoDB로 데이터 전송함
- 실시간에 가깝게 데이터를 적재한다는 특성상 빠른 업로드가 중요하다고 판단, NoSQL 계열의 MongoDB를 사용
- Flask를 통한 웹 배포 시 최신 데이터 필터링에 활용하기 위해 'date' 열은 '년월일 - 시분'까지 반영
- 1사이클 당 데이터가 7,000~8,000행 수준으로 업데이트된다는 점을 고려하여, MongoDB Collection 크기는 1시간 정도의 분량인 100,000 행으로 설정
(100,000행이 넘어가면 가장 오래된 데이터부터 순차적으로 삭제됨)
- MongoDB에서 최신 1사이클의 데이터셋만을 전송받아 웹으로 배포하며, 구분 기준은 'date' 열을 사용함
- 배포 시, 'Price' 열값이 0인 행들은 제외됨
- 원하는 지역이나 호텔의 이름을 입력하고 'search' 버튼을 클릭하면 조건에 맞는 호텔 리스트가 출력되며, 해당 행의 'Link' 열값을 클릭하여 예약페이지로 이동 가능
-
임현수
- Scrapy framework (Spider)를 사용하여 여기어때 & 데일리호텔 크롤링 및 쉘스크립트 작성
- 리드미 작성 및 프레젠테이션 자료 제작 (메인)
-
최민권
- Scrapy framework (Spider)를 사용하여 야놀자 크롤링 및 쉘스크립트 작성
- Crontab 설정 및 Flask를 활용하여 AWS 웹서버 배포
- 리드미 작성 및 프레젠테이션 자료 제작 (서브)
※ 본 프로젝트는 패스트캠퍼스 데이터사이언스 취업스쿨 16th 크롤링 프로젝트로 진행되었습니다.