기본적인 아이디어와 구상은 다음과 같다.
인터넷 상에는 여러개의 공모전사이트가 있고 각 사이트마다 전혀 다른 공모전에 대한 정보가 올라오거나 중복된 정보가 존재할 수 있다.
이런 실태에서 각 공모전사이트에 흩어진 공모전 정보를 모으고 특정기준에 따라 분류를 하여 정보를 제공하는것이 기본적인 아이디어이다.
정보를 수집 할 공모전 사이트로는 위비티(wevity) , 씽굿(thinkgood) , 데티즌(detizen)으로 총 3개의 공모전에서 정보를 수집하였고,
위의 사이트에서 얻은 공모전의 정보들은 다음과 같다.
( 해당 공모전을 게시한 사이트 이름 , 공모전 이름 , 공모전 분야 , 주최사 이름 , Dday 정보 , 공모전 진행상황 , 해당 사이트 주소 )
정보를 수집 시 필요한 기술은 크롤링으로 python의 beautifulsoup 모듈을 사용한다.
정보를 수집한 뒤 웹페이지를 통해서 이용자에게 정보를 전달한다. 이때 정보는 각 공모전 사이트로 분류되고 공모전의 정보를 타이핑한 키워드를 통하여 검색할 수 있다.
크롤링한 정보를 저장할 때에는 elastic search와 python을 연동하여 데이터베이스겸 서버의 역할을 하고
이런 서비스를 이용자에게 제공할 공간은 웹페이지로 python의 flask 웹 프레임워크를 이용해 제작한다.
이를 통해 이용자가 얻을 수 있는 이익은 여러 사이트에서 공모전을 비교하여 수고를 덜어주고 키워드를 통해 검색이 가능하여 공모전 탐색이 수월해 질 것으로 예상한다.
prototype function
- [System] - Shell Script
- [Main page] - HTML, Flask
- [Crawler] - Python : Beautifulsoup4
- [Search] - Python : Elasticsearch
Free Software
~$ mkdir new ( new : 생성할 디렉토리 이름)
~$ cd new (new : 생성한 디렉토리 이름)
~/new$ git clone https://github.com/Open-Source-Programming-Team-4/team_project.git
~$ cd team_project
~$ chmod 755 install.sh
~$ ./install.sh 설치가 정상적으로 이루어지지 않는 경우 Elasticsearch와 flask를 수동 설치한다.
~$ ./run_comp.sh 권한은 자동으로 변경되어 있습니다. 실행이 되지 않는 경우 flask run 명령어를 이용하거나 ./app.py를 입력하여 주십시오.
9. 인터넷 브라우저 창을 키고 주소창에 http://127.0.0.1:5000/을 입력해 접속한다.
~/new$ cd team_project/mod_pkg/
~/new/team_project/mod_pkg$ chmod 755 *.py
~/new/team_project/mod_pkg$ ./ela_search.py
~new/team_project/mod_pkg$ cd ..
~$ cd elasticsearch-7.6.2/
~/elasticsearch-7.6.2$ ./bin/elasticsearch
~/new/team_project$ ./app.py
