심심풀이로 로또의 추첨결과 정보를 가져오는 프로그램을 작성하려고 한다.
로또복권 운영사인 동행복권 홈페이지에서는 별도의 API를 제공하지 않지만 홈페이지의 소스를 보다보면
아래와 같이 내부에서 결과 정보를 호출하는 구문이 있고, 쿼리 URL을 쉽게 찾을 수 있다.
로또 추첨결과의 회차별 정보를 가져오는 URL은 다음과 같다.
로또 추첨 결과 쿼리 URL: https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=1119
쿼리의 "drwNo" 값이 회차 이다.
쿼리가 정상적으로 수행되었을때 수신되는 메시지(JSON)는 다음과 같다.
{
"totSellamnt":111840714000, //전체 당첨 상금 총액(1등~5등 모든 당첨금액)
"returnValue":"success", //요청결과(정상:success, 실패:fail)
"drwNoDate":"2024-05-11", //추첨일
"firstWinamnt":1396028764, //1등 추첨자의 당첨금액
"drwtNo6":45, //6번째 번호
"drwtNo4":13, //4번째 번호
"firstPrzwnerCo":19, //1등 당첨자 수
"drwtNo5":20, //5번째 번호
"bnusNo":3, //보너스번호 번호
"firstAccumamnt":26524546516, //1등 총 당첨금액(1등 당첨금액 * 1등 당첨자 수)
"drwNo":1119, //회차 번호
"drwtNo2":9, //2번째 번호
"drwtNo3":12, //3번째 번호
"drwtNo1":1 //1번째 번호
}
JSON 구조로 쉽게 파싱하도록 되어있다.
아래의 당첨결과 상세페이지의 내용가 대조하면 쉬울 듯 하다.
추가로 최신 회차를 구하는 계산식 함수는 다음과 같다,
# 로또 1회차(2002-12-07)기준으로 오늘까지의 회차를 가져오는 함수
def get_last_rounds():
start_date = datetime.date(2002, 12, 7) #1회 추첨일
today = datetime.date.today()
# 주차 계산
weeks = (today - start_date).days // 7
return weeks + 1
2002-12-07이 1회 추첨일이므로 이기준으로 오늘까지의 주차수(weeks)를 구하여 +1을 해준다.
'Programming' 카테고리의 다른 글
[C#] WPF ResourceDirectory를 통한 MVVM 구현 (0) | 2024.09.02 |
---|---|
ST-LINK/V2 핀맵(PinMap) (0) | 2024.04.19 |
[ubuntu] VirtualBox에서 Ubuntu 설치 후 클립보드 공유 안될 때 (0) | 2024.02.07 |
[C#,WPF] INotifyPropertyChanged & binding (0) | 2024.01.25 |
패킷 TLV필드 형식 (0) | 2023.10.31 |