🪧 About  
home
[출판사] 전기장판  
home

[python] API 활용해서 로또 당첨번호 조회하기

글쓴이
생성일
2019/05/14
카테고리
태그
5 more properties
나눔로또에서 제공하는 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)
Plain Text
그 다음에는 저장된 데이터가 있다면 그 다음 차수부터, 없다면 1회차부터 로또를 불러오도록 chasu변수를 설정해줍니다. 저는 기존 데이터를 df_raw라는 이름으로 불러왔습니다.
# %% 저장된 데이터 불러오기 try: df_raw except NameError: chasu=1 jackpot = pd.DataFrame() else: chasu = df_raw.index[-1]+2 jackpot = df_raw
Plain Text
그리고 불러온 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)
Plain Text
마지막으로 불러온 데이터, 여기서는 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)
Plain Text
이상으로 간단한 로또 당첨번호 조회하기였습니다.
아래는 코드 전문입니다.

전체코드(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)
Plain Text
Copyright ⓒ 2022 SADAM Media All Rights Reserved.
사담미디어(SADAM Media) / 사업자번호: 703-37-00838