본문 바로가기
코딩 연습/코딩배우기

동행복권 로또 당첨번호 추출하는 파이썬 크롤링 코딩

by good4me 2022. 3. 29.

goodthings4me.tistory.com

동행복권 로또 당첨번호 추출하는 파이썬 크롤링 코드를 만들어보았다. 네이버 지식인에 올라온 내용인 [vscode 파이썬 코딩 도와주세요. 로또 몇몇회 치고 버튼누르면 그 회 로또번호 나오게끔 (GUI로) 부탁합니다ㅠㅠ]을 가지고 작성한 코드이다.

 

 

네이버 지식인 요구 - 동행복권 로또 당첨번호 추출

파이썬으로 동행 복권 로또 당첨번호를 추출하는 내용이었는데, tkinter GUI에서 로또 회차를 입력하고 버튼을 누르면 requetst와 beautifiulsoup로 당첨번호와 보너스 번호를 추출하고 그 내용을 표시해달라는 요구사항이었다.
로또 당첨번호 추출은 함수로 다시 만들었고, 파이썬 tkinter 부분은 요구자의 코드를 그대로 두고 일부만 추가하였다.

 

소스 코드

from tkinter import *
import requests
from bs4 import BeautifulSoup


def lottery_resust(seq):
    url = 'https://www.dhlottery.co.kr/gameResult.do?method=byWin'
    payload = {'drwNo': seq, 'dwrNoList': seq}
    req = requests.post(url, data=payload)
    try:
        int(seq)
    except ValueError as e:
        print(f'Error: {e}')
        return False

    result = []
    soup = BeautifulSoup(req.text, "html.parser")
    win_res = soup.find("div", attrs=("class","win_result"))
    no = win_res.select_one('h4 > strong').text
    _day = win_res.find('p', class_='desc').text
    print(f'로또 {no} 당첨결과 {_day}')
    result.append(f'로또 {no} 당첨결과')
    result.append(f'{_day}')

    lot_num = [lot.text for lot in win_res.select('div > div.num.win > p > span.ball_645')]
    lot_bonus = win_res.select_one('div > div.num.bonus > p > span').text
    print(f'당첨번호 : {lot_num} / 보너스번호 : {lot_bonus}')
    result.append(f'당첨번호 : {lot_num}')
    result.append(f'보너스번호 : {lot_bonus}')

    return result


window = Tk()
window.title("로또 번호 확인하기")
window.geometry("500x300")
window.option_add("*Font","궁서 15")

#입력창
ent = Entry(window)
ent.pack()


def ent_com(): #ent_com라는 함수 정의
    lot_num = ent.get()
    res = lottery_resust(lot_num)
    if res:
        for r in res:
            list_content_view.insert(END, r)
            list_content_view.update()        
        list_content_view.insert(END, '')
        list_content_view.update()
    else:
        list_content_view.insert(END, '오류!! 숫자를 입력하세요.')
        list_content_view.update()        

#실행버튼
btn = Button(window)
btn.config(text="로또 당첨 번호 확인")
btn.config(command=ent_com)
btn.pack()

scrollbar = Scrollbar(window)
scrollbar.pack(side='right', fill='y')
list_content_view = Listbox(window, height=6, yscrollcommand=scrollbar.set)
list_content_view.pack(side='left', fill='both', expand=True)
scrollbar.config(command=list_content_view.yview)

window.mainloop()

 

good4me.co.kr

 

[실행 결과]

동행복권 로또 회차(예로, 1006)를 입력하고 '로또 당첨 번호 확인'을 클릭하면, 다음과 같이 추출된다

로또 1006회 당첨결과
(2022년 03월 12일 추첨)
당첨번호 : ['8', '11', '15', '16', '17', '37']
보너스번호 : 36

회차를 더 입력하면 개행이 밑으로 되면서 계속 결과를 출력한다.

회차 입력 시 숫자가 아닌 문자 등이 입력되면 예외처리를 해서 '오류!! 숫자를 입력하세요.'라는 메시지가 출력된다.

 

 

입력화면
입력화면

 

출력 결과
출력 결과

 

▶포스팅 내용과 유사한 글 더보기

https://goodthings4me.tistory.com/702

 

로또 당첨번호 회차별 엑셀 저장(파이썬 크롤링)

로또 당첨번호를 확인하는 웹 페이지(동행복권)에 대한 파이썬 크롤링을 하는 김에 이전 포스팅(동행복권 로또 당첨번호 추출하는 파이썬 크롤링 코딩)에 이어서 이번에는 지정된 범위의 회차

goodthings4me.tistory.com

 

https://goodthings4me.tistory.com/34

 

[python] 주어진 6개의 숫자 맞추기(로또번호 맞추기)

■ 숫자 1 ~ 45 사이의 6개의 번호가 랜덤하게 추출되어 있는 상태에서 숫자(로또번호)를 1개씩 입력하면 맞춘 번호를 알려준다. 총 6번의 입력 기회가 주어지며, 맞춘 번호는 제외하고 남은

goodthings4me.tistory.com

 

댓글