본문 바로가기
프로그래밍/Python

Python으로 로또(Lotto) 모든 회차 당첨 번호를 Json포맷으로 가져와보자.

by _BlankSpace 2020. 1. 21.

요즘 파이썬은 프로그래밍을 처음 접하는 사람에게 자주 권해지는 언어라는 이야기를 많이 듣습니다. 아무래도 포인터도 없고 관련 라이브러리가 많아서, 원하는 내용을 인터넷 검색으로 쉽게 찾을 수 있기 때문이 아닐까 싶습니다.

 

그래서 저 역시, 파이썬을 공부하면서 간단하게 해 볼 만한 주제가 있지 않을까라는 생각을 해봤습니다. 그래서 찾아본 결과, 로또를 회차 별로 관련 정보를 가져오면 어떨까라는 생각을 하게 되었네요. 물론, 여기서 끝내는 것은 아니고, 관련 정보를 가져오고, 데이터화하여 그래프와 같이 도식화하면 어떨까라는 생각을 하였습니다.

 

그래서 이번 포스팅에서는 가장 먼저 해야할 것인 로또 사이트에서 회차별 정보를 JSON 포맷으로 가져오는 방법을 정리해보려고 합니다.

 

 

 

 

일단, 로또 사이트는 아래와 같습니다.

https://www.dhlottery.co.kr/common.do?method=main

 

동행복권

당첨번호 19 32 37 40 41 43 보너스번호 45 1등 9게임 총 당첨금액 약 214억원 (1게임당 당첨금액 약 24억원) 이전 회차 당첨정보 보기 다음 회차 당첨정보 보기 다음회차 2020-01-20 23:55 현재 예상당첨금2,314,716,558원 누적판매금 9,624,319,000 원 회차별 당첨결과 구매하기

www.dhlottery.co.kr

 

사실, 저는 로또를 하지 않습니다만, 이것을 하시는 분들은 일주일 동안 행복한 상상을 할 수 있어서 산다고 하더군요. 저도, 꽤 괜찮은 분석(?) 도구까지 만들게 되면 도전해보겠습니다..

 

관련 링크에서 회차별 복권 정보를 가져오자.

아무튼, 그럼 복권를 회차별로 어떻게 관련 정보를 가져오지라는 생각을 하고, 동행 복권 사이트에서 관련 api정보를 제공하는지에 대해서 찾아보았습니다. 결론으로는 아래와 같은 방법이 있더군요.

https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=[원하는 회차]

위에 주소에서 끝에 있는 [원하는 회차] 정보만 입력해서 주소창에 넣으면 됩니다. 그럼, 관련 정보가 아래처럼 나옵니다.

 

 

 

 

이제, 이 내용을 파이썬에서 가져오도록 하겠습니다.

 

 

파이썬에서 URL로 요청하고 관련 정보를 받아오자.

일단, 여기서 필요한 모듈은 requests입니다. 관련 모듈을 아래처럼 선언해주세요.

import requests 

 

이제 위에서 requests 모듈을 이용하여, 로또 URL에서 회차별 정보를 가져와볼까요? 굉장히 간단합니다.

아래처럼 입력하면, 회차별 정보를 JSON 형식으로 가져올 수 있습니다.

resp = requests.get(url)
print(resp.json())

 

결과

{'totSellamnt': 88465183000, 'returnValue': 'success', 'drwNoDate': '2020-01-18', 'firstWinamnt': 2377935959, 'drwtNo6': 43, 'drwtNo4': 40, 'firstPrzwnerCo': 9, 'drwtNo5': 41, 'bnusNo': 45, 'firstAccumamnt': 21401423631, 'drwNo': 894, 'drwtNo2': 32, 'drwtNo3': 37, 'drwtNo1': 19}

 

위에 내용만 이용한다면 로또 사이트에서 원하는 정보를 가져오는 것에는 무리가 없으리라 생각합니다.

 

이제, 간단하게 로또 사이트에서 관련 정보를 가져와서 txt 파일에 저장하는 코드를 작성해볼까요.

아래 코드는 굉장히 간단합니다. 파이썬의 기본 문법과 위에 requests 모듈에 대한 내용을 읽었다면 쉽게 이해할 수 있을 거예요.

 

import requests 

def inputRoundNumber():
    roundNumber = input("당첨번호를 확인할 회차 번호를 입력해주세요 : ")
    return roundNumber

def getJsonFromURL(url):
    return requests.get(url)

def existLottoData(json, roundNumber):
    if (json["returnValue"] == "success"):
        print(json)
        return True
    else:
        print("존재하지 않는 회차 번호. (%s)" % (roundNumber))
        return False
        

// JSON 형식을 파일에 저장한다.
def writeJsonToFile(file, jsonData):
    fout = open(file, 'w')
    fout.write(str(jsonData))
    fout.close()


// main 함수
roundNumber = -1
while int(roundNumber) != 0 :
    lottoURL = "https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo="
    roundNumber = inputRoundNumber()
    url = lottoURL + roundNumber

    resp = getJsonFromURL(url)
    print(resp.json())
    exist = existLottoData(resp.json(), roundNumber)
    if (exist) :
        writeJsonToFile("output.txt", resp.json())

 

 

아래는 위의 코드를 실행파일로 만든 것입니다. 확인이 필요하시면 실행해보세요!

혹시나 파이썬 코드를 파일로 만드는 방법이 궁금하신 분이라면 아래 포스팅을 참고해보세요.

[프로그래밍/Python] - Pyinstaller 이용하여 Python 소스코드 실행파일(exe)로 만들어보자.

 

 

LottoAnalytics.exe
6.21MB

 

이번 포스팅은 굉장히 간단합니다. 이후에는 위와 같은 내용을 파일로 저장하지 않고 데이터베이스에 저장하는 방법과 그 데이터들을 도식화하는 방법까지 정리하도록 하겠습니다.

 

그럼, 이상으로 포스팅을 마치도록 하겠습니다.

 

저의 글이 도움이 되었다면 공감 및 구독 버튼을 눌러주시면 감사하겠습니다. :)

댓글