ovenapp에서 만들었던 레이아웃을 토대로 프론트 화면을 구성 중인데... 대부분이 테이블 형식으로 되어있어서 디자인적으로 이뻐보이지는 않는다ㅎㅎ 테이블을 좀 다른 형식으로도 풀어서 작업하고싶었는데 이렇게 프론트 화면 구성에 욕심을 내다보면 다음 작업을 할 시간이 부족할거같아서 여기까지만ㅠ 일단 이렇게 최대한 심플한 레이아웃으로 진행을 하고 혹시! 시간이 남는다면 그때 디자인적으로 욕심을 좀 더 내볼 생각이다.
부트스트랩을 사용하지않고 직접 HTML과 CSS 코드를 작성했다. 화면이 거의 타이틀과 테이블 형식으로 간단하게 구성되어있어 프론트 화면을 그리는데에 긴 시간이 소요되지않았다. 공통으로 사용되는 부분(Title, Description, Disclaimer, Table, Button...)을 파악 후 먼저 작업하여 어느 섹션에서도 사용할 수 있도록 공통화 작업을 해놓으면 작업 소요시간을 단축할 수 있다.
https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=회차번호
나눔로또에서 제공하는 로또 당첨번호 API는 url 끝 부분에 회차번호를 입력하면 각 회차별 API를 가지고 올 수가 있다! API를 호출하면 아래와 같은 결과를 받을 수가 있다.👇
{
totSellamnt: 87708256000, // 누적금
returnValue: "success", // 실행결과
drwNoDate: "2020-08-15", // 추첨날짜
firstWinamnt: 2382430667, // 1등 당첨금
drwtNo6: 44, // 당첨번호 6
drwtNo4: 42, // 당첨번호 4
firstPrzwnerCo: 9, // 1등 당첨인원
drwtNo5: 43, // 당첨번호 5
bnusNo: 13, // 보너스 당첨번호
firstAccumamnt: 21441876003, // 1등 당첨금 총액
drwNo: 924, // 회차번호
drwtNo2: 11, // 당첨번호 2
drwtNo3: 34, // 당첨번호 3
drwtNo1: 3 // 당첨번호 1
}
나는 위의 결과 중에서 아래 항목들만 사용할 예정이다!
로또 API는 db에 한 번만 저장해두고 사용하면 되기 때문에 init_db.py
에 따로 작성해주었다. 음... 문제는 1회부터 최신회차까지 주르륵 가져와야하는데 최신회차는 앞으로 계속 업데이트가 될테고 가장 최신회차까지만 반복문이 돌아야하는데 어떻게 예외처리를 해야할지 고민이다. 일단은 가장 최신회차로만 해서 API를 가져와보는건 테스트했고 이제 좀 전에 말한대로 반복과 예외처리에 대해 좀 더 생각해봐야할 것 같다.🤔
👏튜터님의 도움을 받아 while문을 사용하여 무한루프 처리를 할 수 있었다! while True :
while문을 무한루프로 만들기 위해서 조건문에 True를 입력해줬다. 그리고 무한루프에서 빠져나오기 위해서 break를 사용하였다.
또한, 저장한 많은 db 중에서 가장 최신회차 데이터만 가져와서 뿌려줘야하기 때문에 .sort('drwNo', -1).limit(1))
sort를 사용하여 내림차순으로 정렬한 뒤 limit을 사용하여 출력할 데이터 갯수를 지정해줬다.
동행복권 사이트에서 이번주 로또 당첨정보랑 역대 최다 판매점 정보를 크롤링 해서 db에 저장해뒀다. 이것도 위에 API 가져온거처럼 한 번만 저장해두면 되게 때문에 init_db.py
에서 작업했다. 한 번 크롤링해서 db에 저장해보니 두번째는 수월하게 할 수 있었다.
내가 회사에서 스파르타 개인 프로젝트 작업을 하려 했을 때 사내 proxy 때문에 패키지 다운로드부터 requests 연결까지 제대로 되지 않아서 직접 구글링을 하면서 해결 방법을 찾았다. 까먹지 않기 위해 또는 나와 같은 경험을 할 수 있는 사람들을 위해 기록해놔야겠다고 생각했다!
pip --proxy [회사 프록시 url] --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org install 패키지명
proxies = { 'http': None, 'https': None }
data = requests.get('https://dhlottery.co.kr/gameResult.do?method=byWin', headers=headers, proxies=proxies)