[python] 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)
Code language: PHP (php)

그 다음에는 저장된 데이터가 있다면 그 다음 차수부터, 없다면 1회차부터 로또를 불러오도록 chasu변수를 설정해줍니다. 저는 기존 데이터를 df_raw라는 이름으로 불러왔습니다.

# %% 저장된 데이터 불러오기try: df_rawexcept NameError:    chasu=1    jackpot = pd.DataFrame()else:    chasu = df_raw.index[-1]+2    jackpot = df_raw
Code language: PHP (php)

그리고 불러온 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 += 1jackpot = jackpot.reset_index(drop=True)
Code language: HTML, XML (xml)

마지막으로 불러온 데이터, 여기서는 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)
Code language: PHP (php)

이상으로 간단한 로또 당첨번호 조회하기였습니다.

아래는 코드 전문입니다.

전체코드(GoogleColab)

# Extrationfrom urllib.request import urlopenimport pandas as pdimport jsonimport 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_rawexcept 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 += 1jackpot = 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)
Code language: HTML, XML (xml)

댓글 남기기