반복적으로 적었지만, "장고(웹) / 크롤링 / 깃"을 공부하기 위한 목적으로 진행하는 프로젝트이기 때문에 반복적으로 시간이 오래 걸리는 반복 작업은 최대한 제거하려고 하였고 프론트 부분은 데이터만 잘 표시될 수 있도록 진행하였다. 그래서 처음 생각했던 기획과 상당히 달라졌는데, 프로젝트의 방향을 잡고 목표한 바를 제대로 이루기 위해 이번 게시물을 작성하게 되었다. 지금까지 완료한 사항과 더불어 수정된 사항, 앞으로 진행할 사항 및 과정을 작성해볼 것이다.
프로젝트 진행
첫 계획
계획서를 토대로 계획했던 내용을 적어보았다.
프레임워크
- Frontend : html, css, javascript
- Backend : django, sqlite
- Crawling / Preprocessing : bs4, pandas
메인 페이지
- 검색 기능
- 추천 검색어 제공
- 더보기 기능
세부 페이지 (1) - 검색
- 검색어에 부합하는 공모전을 사용자에게 제공
- 플랫폼, 제목, 접수 기간 정보를 제공
- 페이지네이션 기능 제공
세부 페이지 (2) - 더보기
- 선택한 플랫폼의 공모전을 사용자에게 제공
- 제목, 접수 기간 정보를 제공
- 페이지네이션 기능 제공
수정 사항
프레임워크
- Frontend 프레임워크에 javascript는 사용하지 않음, 이후에도 특별히 사용할 일은 없어 보임
- Crawling / Preprocessing 프레임워크에 bs4와 더불어 selenium도 사용
메인 페이지
- "더보기"를 클릭하면 "세부 페이지 (2) - 더보기" 접속으로 계획했으나 해당 공모전 사이트 접속으로 변경
세부 페이지 (1) - 검색
- 변경 사항 없음
세부 페이지 (2) - 더보기
- 해당 세부 페이지 삭제
완료한 사항
메인 페이지
- 기능적 요소는 모두 완료, 요소의 위치를 확인하기 위한 테두리 선만 제거하면 됨
세부 페이지 (1) - 검색
- 검색어 기능 완료
스크래핑
- 세 개의 공모전 사이트 스크래핑 완료
추가 기능
- local page(http://127.0.0.1:8000/)로 접속했을 때, http://127.0.0.1:8000/main/으로 리다이렉션
- 스크래핑한 내용을 csv로 저장
- 마우스를 공모전 요소에 올리면 색깔로 표시
진행할 사항
메인 페이지
- 페이지 테두리 제거 및 디자인 마무리
세부 페이지 (1) - 검색
- 검색어가 포함된 제목을 가진 공모전을 찾아 제공
- 페이지 테두리 제거 및 디자인 마무리
- 페이지네이션
스크래핑
- 오류 없이 완료되는지 확인 (아직 테스트를 위해 일부만 스크래핑해봄)
추가 기능 (해도 되고 안 해도 되고)
- 스크래핑을 재진행하는 경우 존재하지 않는 것만 스크래핑 후 종료 (시간 절약)
추가 기능
- 코드 리팩토링 (가독성, 중복 내용 제거 등)
진행 순서
기능적 요소를 먼저 갖춘 후에 디자인, 에러 확인 등을 진행할 것이다.
- 세부 페이지 (1) - 검색 : 검색어가 포함된 제목을 가진 공모전을 찾아 제공
- 세부 페이지 (1) - 검색 : 페이지네이션
- 스크래핑 : 오류 없이 완료되는지 확인
- 메인 페이지, 세부 페이지 (1) - 검색 : 페이지 테두리 제거 및 디자인 마무리
- 추가 기능 : 코드 리팩토링(가독성, 중복 내용 제거 등)
- 추가 기능 : 스크래핑을 재진행하는 경우 존재하지 않는 것만 스크래핑 후 종료
다음에는 진행 순서대로 공모전 검색 기능과 페이지네이션 기능을 추가해 볼 것이다.
'프로젝트 단위 공부 > [개인 프로젝트] 공모전 크롤링' 카테고리의 다른 글
[개인 프로젝트] 공모전 크롤링 (11) - 데이터 스크래핑, 디자인 마무리 (0) | 2024.05.12 |
---|---|
[개인 프로젝트] 공모전 크롤링 (10) - 세부 페이지(검색 기능, 페이지네이션) (0) | 2024.05.11 |
[개인 프로젝트] 공모전 크롤링 (9) - 세부 페이지(검색, 더보기) (0) | 2024.05.06 |
[개인 프로젝트] 공모전 크롤링 (8) - 메인 페이지(공모전 표시), 데이터 csv 저장 (2) | 2024.05.03 |
[개인 프로젝트] 공모전 크롤링 (7) - 메인 페이지 (프론트) (2) | 2024.05.02 |