1. 프로젝트 이름
"매일특가" (가칭)
2. 프로젝트 설명
대한민국의 각 커뮤니티에는 여러 게시판이 있고, 그 중 특가 게시판이 있는 경우가 많다. 여기에는 한정된 시간동안 잠깐 진행하는 딜이나 오프라인 구매처의 특별 세일 등이 올라온다. 이 특가 제품들은 일반적인 구매처에서 (네이버 쇼핑 등) 사는 금액보다 조금 또는 훨씬 저렴한 경우가 많다. 그런데 커뮤니티가 매우 많으므로 대부분 특정 커뮤니티에서 한정된 정보를 얻게 된다.
아니면 주기적으로 여러 사이트들을 돌아다니며 특가정보를 확인할 수는 있지만 번거로우며, 시간도 일정 부분 소요된다. 따라서 이러한 특가정보를 여러 커뮤니티에서 돌아다니지 않고 하나의 사이트에서 한번에 볼 수 있도록 하여 효과적으로 특가정보를 얻을 수 있다.
3. 프로젝트 생김새
4. 개발해야 할 기본기능
(1) 스크래핑
- 커뮤니티 별 특가 사이트들의 게시글들을 스크래핑하며, DB(mongodb)에 삽입 ()
- 스크래핑 항목 : 제목, 가격, 링크, 시간, 이미지
- 스크래핑 단위 : 글 리젠률이 높지 않으므로, 각 사이트당 1~2페이지를 스크래핑
- 스크래핑 주기 : 매 1시간, 새벽 1시부터 오전7시까지는 스크래핑을 수행하지 않음.
(2) 데이터베이스 작업
- 중복 제거 : 글 리젠률에 따라 이전 정보가 스크래핑 될 수 있으므로, "링크" 단위로 중복을 제거한다.
(3) API 제작
- 스크래핑한 데이터를 DB에 저장하는 API (매 1시간 반복)
- DB에 저장된 데이터를 사이트로 출력하는 API (매 1시간 반복)
- 데이터 출력은 [제목, 링크, 사이트명, 가격, 시간] 으로 출력한다. 일반 게시판의 형태가 된다.
5. 추가기능
- 기본 검색 : 제목들 중 키워드로 검색 (DB에서 해당 조건으로 검색하여 다시 데이터를 뿌려주는 형태)
- 조건 검색 : 가격별(최저가별 등), 날짜별(오늘, 최근3일 등)
- 원하는 검색 키워드 알림 : 회원 가입 기능 및 카톡 알림 기능 (또는 메일)
- 게시물의 클릭 수 기록
- 모바일/데스크탑 모드
6. 프로젝트 완료 후 추가 기능
- 다른 특가 사이트 추가
- 각 특가 사이트에서 구분한 카테고리를 기반으로 각 게시물의 카테고리 정보를 삽입, 카테고리 검색기능 추가
- 종료된 딜 표시 : 해당 사이트가 연결이 안되거나, 가격이 바뀌는 등이 확인되면, 종료되었다고 표시
- 각 내용들에 tag를 붙이고 categorized 화 하기 (메타데이터 사용)
7. 프로젝트에 필요한 데이터 소스
(1) 스크래핑 소스
- 퀘이사존 : https://quasarzone.com/bbs/qb_saleinfo
- 카톡 톡딜 : https://store.kakao.com/
- 클리앙 알뜰구매 : https://www.clien.net/service/board/jirum
- 펨코 핫딜 : https://www.fmkorea.com/hotdeal
- 루리웹 핫딜1 : https://bbs.ruliweb.com/market/board/600004
- 루리웹 핫딜2 : https://bbs.ruliweb.com/market/board/1020
- 뽐뿌 오프라인뽐뿌 : http://www.ppomppu.co.kr/zboard/zboard.php?id=ppomppu5
(2) 기술자료
- 카톡 알림 : https://developers.kakao.com/docs/latest/ko/message/common
- 현재 접속자 수 확인 모듈 : : https://www.jbfactory.net/11404
- 구글 애널리틱스 (총 방문자수 등) : https://analytics.google.com/analytics/web/
8. API 설계
기능 | 요청 (Request) | 응답 (Response) | ||
요청 URL | 요청 방식 (GET / POST) |
요청 데이터 |
응답데이터 | |
크롤링한 데이터를 웹에 게시 |
/api/publish_data | GET | 제목(dealtitle) 링크(dealurl) 가격(dealprice) 소스사이트(dealsource) 날짜(dealdate) 클릭수(countclick) |
(JSON 형식) 'result'= 'success' |
데이터 클릭 수 업데이트 |
api/click | POST | 클릭수(countclick) | (JSON 형식) 'result'= 'success' |
제목 검색 | /api/search_name | GET | 제목(dealtitle) 링크(dealurl) 가격(dealprice) 소스사이트(dealsource) 날짜(dealdate) 클릭수(countclick) |
(JSON 형식) 'result'= 'success' |
날짜 검색 (오늘) |
/api/search_today | GET | 제목(dealtitle) 링크(dealurl) 가격(dealprice) 소스사이트(dealsource) 날짜(dealdate) 클릭수(countclick) |
(JSON 형식) 'result'= 'success' |
날짜 검색 (최근 3일) |
/api/search_3days | GET | 제목(dealtitle) 링크(dealurl) 가격(dealprice) 소스사이트(dealsource) 날짜(dealdate) 클릭수(countclick) |
(JSON 형식) 'result'= 'success' |
'SCC 9기' 카테고리의 다른 글
[SCC 9기] - Project TIL : 스크래핑 (0) | 2020.08.22 |
---|---|
[SCC 9기] - 6주차 (0) | 2020.08.22 |
[SCC 9기] 5주차 (0) | 2020.08.11 |
[SCC 9기] 4주차 (0) | 2020.08.11 |
[SPC 9기] 3주차 (0) | 2020.07.25 |