API로 로또 당첨번호를 조회하는 방법
나눔로또에서 제공하는 API를 활용해서 로또 당첨번호를 불러오는 코드입니다.
우선 저장된 데이터가 있다면, 저장된 데이터를 불러옵니다.
# %% 저장된 데이터 불러오기
dir = 'S:/내 드라이브/09_git/Py-Projects/0007/data/'
con = sqlite3.connect(dir + 'data.db')
c = con.cursor()
sql01 = """select * from 'jackpot'"""
df_raw = pd.read_sql(sql01, con)그 다음에는 저장된 데이터가 있다면 그 다음 차수부터, 없다면 1회차부터 로또를 불러오도록 chasu변수를 설정해줍니다. 저는 기존 데이터를 df_raw라는 이름으로 불러왔습니다.
# %% 저장된 데이터 불러오기
try: df_raw
except NameError:
chasu=1
jackpot = pd.DataFrame()
else:
chasu = df_raw.index[-1]+2
jackpot = df_raw그리고 불러온 chasu변수를 활용하여 로또 당첨번호를 긁어옵니다. 보너스 번호와 6개 번호를 크기 순서대로 정렬합니다.
# %% 로또 결과를 df로 불러오기
# 기존 데이터가 없으면 1회차부터, 있을 경우 추가된 데이터만 불러옵니다.
while 1:
url="<http://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo=>"+str(chasu)
result_data = urlopen(url)
result = result_data.read()
data = json.loads(result.decode('utf-8'))
if data['returnValue'] == 'fail':
print('마지막 차수({})에 도달했습니다.'.format(chasu-1))
break
df = pd.DataFrame({
'no1': [data['drwtNo1']],
'no2': [data['drwtNo2']],
'no3': [data['drwtNo3']],
'no4': [data['drwtNo4']],
'no5': [data['drwtNo5']],
'no6': [data['drwtNo6']],
'bonus': [data['bnusNo']]
})
jackpot = pd.concat([jackpot, df])
chasu += 1
jackpot = jackpot.reset_index(drop=True)마지막으로 불러온 데이터, 여기서는 jackpot이라는 데이터프레임을 sql로 저장합니다. 제가 sql을 주로 사용해서 그렇지, 원하시는 형태로 저장하시면 됩니다.
# %% 데이터 저장하기
dir = 'S:/내 드라이브/09_git/Py-Projects/0007/data/'
con = sqlite3.connect(dir + 'data.db')
c = con.cursor()
jackpot.to_sql('jackpot', con, if_exists='replace', index=False)이상으로 간단한 로또 당첨번호 조회하기였습니다.
아래는 코드 전문입니다.
전체코드(GoogleColab)
# Extration
from urllib.request import urlopen
import pandas as pd
import json
import sqlite3
## 저장된 데이터 불러오기(있을 경우)
dir = '/content/drive/My Drive/[10]Colab/[02]Project_DeepLearning/[00]Data/'
con = sqlite3.connect(dir + 'data01.db')
c = con.cursor()
sql01 = """select * from 'jackpot'"""
df_raw = pd.read_sql(sql01, con)
## 기존 데이터 있는지 확인하기
try: df_raw
except NameError:
chasu=1
jackpot = pd.DataFrame()
else:
chasu = df_raw.index[-1]+2
jackpot = df_raw
## 로또 결과를 df로 불러오기
기존 데이터가 없으면 1회차부터, 있을 경우 추가된 데이터만 불러옵니다.
while 1:
url="<http://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo=>"+str(chasu)
result_data = urlopen(url)
result = result_data.read()
data = json.loads(result.decode('utf-8'))
if data['returnValue'] == 'fail':
print('마지막 차수({})에 도달했습니다.'.format(chasu-1))
break
df = pd.DataFrame({
'no1': [data['drwtNo1']],
'no2': [data['drwtNo2']],
'no3': [data['drwtNo3']],
'no4': [data['drwtNo4']],
'no5': [data['drwtNo5']],
'no6': [data['drwtNo6']],
'bonus': [data['bnusNo']]
})
jackpot = pd.concat([jackpot, df])
chasu += 1
jackpot = jackpot.reset_index(drop=True)
## 데이터 저장하기
dir = '/content/drive/My Drive/[10]Colab/[02]Project_DeepLearning/[00]Data/'
con = sqlite3.connect(dir + 'data.db')
c = con.cursor()
jackpot.to_sql('jackpot', con, if_exists='replace', index=False)
