티스토리 뷰
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
반응형
'Python' 카테고리의 다른 글
| [Python] List Comprehension & Dictionary Comprehension (0) | 2024.08.22 |
|---|---|
| Python 가상화 환경 설정 방법 (Venv) (1) | 2024.08.20 |
| [기초강의] 파이썬의 import와 from 구문: 라이브러리 확장 관점에서 (0) | 2024.08.13 |
| [기초강의] Python 출력결과 왼쪽, 오른쪽, 가운데 정렬하기 (3) | 2024.08.13 |
| [기초강의] 파이썬 예외 처리 및 오류 관리 (try, except) (1) | 2024.08.13 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 케라스
- 주식공부
- 인공지능 로또 예측
- 티스토리챌린지
- 주린이탈출
- chat gpt 모델 별 가격
- 재테크
- chat gpt 가격 예상
- chat gpt 4o 예산
- 골든크로스
- Numpy
- 자동매매
- chat gpt 모델별 예산
- 자동매매로직
- 장고 orm sql문 비교
- 차트분석
- 토치비전
- 1164회 로또
- 로또 1164회 당첨
- Python
- chat gpt api 비용 계산
- chat gpt 한국어 가격
- 퀀트투자
- 오블완
- 클래스형 뷰
- 1165회 로또
- chat gpt 모델 api 가격 예측
- 주식투자
- 로또 ai
- 기술적분석
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함
250x250