Programming/Python & Django

로또 번호 생성 파이썬 코드 (동행복권 사이트 번호별 통계 기반)

hdhwang 2023. 3. 19. 18:26

동행복권 > 번호별 통계 페이지에서 각 번호별 당첨 횟수를 BeautifulSoup 라이브러리를 활용하여 크롤링 후 숫자별 당첨 횟수만큼 번호를 생성한 후 랜덤 번호를 중복되지 않게 생성 후 오름차순으로 정렬하여 5게임을 출력하는 코드

동행복권 > 번호별 통계 페이지

import random
from bs4 import BeautifulSoup
import requests

base_url = 'https://dhlottery.co.kr/gameResult.do?method=statByNumber'
con = requests.get(base_url)
soup = BeautifulSoup(con.content, 'html.parser')
stats_table = soup.find('table', {'class': 'tbl_data tbl_data_col'})

stats_list = []
ball_list = []

for tr in stats_table.find_all('tr'):
    ball_data = []
    for td in tr.find_all('td'):
        data = td.get_text()
        if '\n\n' not in data:
            ball_data.append(int(data))

    if ball_data:
        stats_list.append(ball_data)

for stats in stats_list:
    number = stats[0]
    count = stats[1]

    for i in range(count):
        ball_list.append(number)

random.shuffle(ball_list)

for i in range(5):
    num_list = []
    str_num_list = ''

    for j in range(6):
        lotto = random.choice(ball_list)
        while lotto in num_list:
            lotto = random.choice(ball_list)
        num_list.append(lotto)

    num_list.sort()

    for j in range(6):
        str_num = '%02d' % int(num_list[j])
        str_num_list += str_num if str_num_list == '' else f' {str_num}'

    print(f'{chr(i+65)} : {str_num_list}')