티스토리 뷰

728x90
반응형

안녕하세요, 반가워요! 오늘은 '행복동행' 로또 번호를 크롤링하여, 가중치를 두고 로또 번호를 추천하는 Python 코드를 작성해보겠습니다. 이 과정은 데이터 크롤링과 추천 시스템의 기초를 배울 수 있는 아주 흥미로운 프로젝트입니다. 자, 그럼 시작해 볼까요?

📝 프로젝트 개요

이번 프로젝트의 목표는 다음과 같습니다:

  • 로또 번호 크롤링: '행복동행' 로또 홈페이지에서 실제 로또 번호를 수집합니다.
  • 가중치 기반 번호 추천: 수집한 번호를 분석해 가중치를 두어 추천 번호를 생성합니다.

📦 필요한 라이브러리

  • requests: 웹 페이지 데이터를 요청하고 받아오는 데 사용합니다.
  • BeautifulSoup: HTML 파싱 라이브러리로, 웹 페이지에서 필요한 데이터를 추출하는 데 사용합니다.
  • collections: 가중치 계산을 잘 지원하는 자료구조인 Counter를 사용할 예정입니다.

🛠️ 코딩 시작하기

1. 로또 번호 크롤링

다음 코드는 '행복동행'에서 로또 당첨 번호를 크롤링하는 기본적인 방법입니다.

python

 

import requests
from bs4 import BeautifulSoup

def get_lotto_numbers():
    url = "https://www.dhlottery.co.kr/gameResult.do?method=byWin"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')

    # 당첨 번호 추출
    results = []
    rows = soup.select("tbody tr")
    for row in rows:
        cols = row.find_all("td")
        if len(cols) > 0:
            numbers = [int(cols[i].text.strip()) for i in range(1, 7)]
            results.append(numbers)
    return results

lotto_numbers = get_lotto_numbers()
print("가장 최근 당첨 번호:", lotto_numbers[:5])  # 최근 5회의 당첨 번호 출력

2. 번호 추천하기

당첨 번호를 기반으로 각 번호의 출현 빈도를 계산하고, 무작위로 가중치를 두어 로또 번호를 추천하는 코드를 작성해 보겠습니다.

python

from collections import Counter
import random

def recommend_lotto_numbers(lotto_numbers):
    flat_numbers = [num for sublist in lotto_numbers for num in sublist]
    counts = Counter(flat_numbers)
    
    # 가중치 기반 추천
    total_count = sum(counts.values())
    weights = {number: count / total_count for number, count in counts.items()}
    
    recommended_numbers = random.choices(list(weights.keys()), weights=list(weights.values()), k=6)
    return sorted(recommended_numbers)

recommended_numbers = recommend_lotto_numbers(lotto_numbers)
print("추천 로또 번호:", recommended_numbers)

코드 설명

  • 로또 번호 크롤링: get_lotto_numbers 함수는 로또 웹사이트에서 당첨 번호를 가져와 리스트로 반환합니다.
  • 번호 추천: recommend_lotto_numbers 함수는 크롤링한 번호를 기반으로 출현 빈도를 계산하여 가중치를 부여합니다. 그런 다음 가중치에 따라 무작위로 6개의 번호를 선택하여 추천합니다.

🎉 추가 재미 요소

이 프로젝트를 기반으로 다음과 같은 재미있는 기능을 추가할 수 있습니다:

  • 차트 시각화: 각 번호의 출현 빈도를 시각화하여, 어느 번호가 상승세인지 확인할 수 있는 기능을 구현할 수 있습니다.
  • 당첨 추적 기능: 추천한 번호로 실제 로또 구매 후 그 결과를 추적하는 기능을 추가할 수 있습니다.
  • 공지사항 알림: 로또 당첨 결과가 발표될 때 알림을 받을 수 있는 기능을 구현하면 더욱 유용합니다!

🔍 마무리하며

오늘은 로또 번호를 크롤링하고 추천하는 간단한 프로젝트를 만들어 보았습니다. 이 과정을 통해 웹 크롤링의 기초와 데이터 처리의 재미를 느꼈다면 좋겠습니다! 그리고 여러분이 추천받은 번호로 행운의 로또 당첨을 꿈꿔 보세요! 😄

추가적인 질문이나 도움이 필요하시면 언제든지 말씀해 주세요. 다음 시간에 뵙겠습니다! 🖐️✨

행복동행 로또 당첨 정보 바로가기

728x90
반응형