나눔로또에서 제공하는 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)