SW/Python

[ python ] 텐서플로우 로또 예측 프로그램 (2) - 로또 API

얇은생각 2018. 11. 19. 18:15
반응형

이번 회차에서는 로또 번호를 학습하기 전에 데이터를 파싱하는 방법에 대해 포스팅하겠습니다. 물론 데이터를 저장하고 읽어오는 방법이 많지만 웹을 활용해 기존 로또 당첨 번호를 json 형식으로 받아와 매주 최신화된 로또 번호를 받아 올 수 있도록 구현하였습니다. 


http://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo=825


해당 url를 익스플로러나 크롬 주소창에 입력하시면 아래와 같은 리턴 값을 확인할 수 있습니다.


{"bnusNo":42,"firstAccumamnt":19904526756,"firstWinamnt":1658710563,"returnValue":"success","totSellamnt":82890578000, "drwtNo3":21,"drwtNo2":15,"drwtNo1":8,"drwtNo6":38,"drwtNo5":33,"drwtNo4":31,"drwNoDate":"2018-09-22","drwNo":825,"firstPrzwnerCo":12}


리턴 값은 제이슨 형식으로 해당 회차에 따라 로또 번호, 날짜 등등의 값을 알 수 있습니다.


1회부터 증가시키며 해당 url로 데이터를 받아와 returnValue의 값이 fail이 나올때까지 요청하여 최신 회차의 데이터까지 모두 받아 저장하고 출력하는 소스 코드입니다. 이제 데이터를 자동으로 최신 번호까지 요청하여 값을 받아오는 부분까지는 완료하였습니다. 이러한 API를 활용하여 자동화 기능을 탑재한 프로그램을 만들어 보도록 하겠습니다. 


from urllib.request import urlopen
import json 
 
#당첨 번호 리스트
no1 = []
no2 = []
no3 = []
no4 = []
no5 = []
no6 = []
 
def lotto(chasu):
    #로또 api url
    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)    
 
    # 해당 회차의 로또 번호 리스트에 장
    if(data['returnValue'== 'success'):
        print("now Chasu : " , chasu)
        no1.append(int (data['drwtNo1']) )
        no2.append(int (data['drwtNo2']) )
        no3.append(int (data['drwtNo3']) )
        no4.append(int (data['drwtNo4']) )
        no5.append(int (data['drwtNo5']) )
        no6.append(int (data['drwtNo6']) )    
 
    # 요청이 성공했을시 sucess 실패시 fail로 리턴
    return data['returnValue']
 
if __name__ == "__main__":
 
    sigNo = 1    
 
    # fail 리턴값을 받기 전까지의 모든 회차의 로또 번호 
    while lotto(sigNo) != 'fail':       
        sigNo +=1
 
    print("no1 : " , no1)
    print("no2 : " , no2)
    print("no3 : " , no3)
    print("no4 : " , no4)
    print("sigNo : ", sigNo)
cs


반응형