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