안녕하세요! 오토박입니다. 😊
오늘은 Python을 활용하여 동행복권 사이트에서 역대 로또 당첨번호를 크롤링하는 방법을 공유하려고 합니다.
이 글을 읽고 나면 여러분도 동행복권 사이트에서 직접 데이터를 가져와 분석할 수 있습니다!
📌 완전한 코드는 블로그 구독 후, 댓글을 남겨주시면 공유해드립니다! 😉
1️⃣ 크롤링 개요
✔ 최신 회차 조회
✔ 각 회차별 당첨번호 크롤링
✔ ThreadPoolExecutor를 사용한 빠른 데이터 수집
✔ BeautifulSoup을 활용한 HTML 파싱
2️⃣ 필요한 라이브러리
import requests
from datetime import datetime
import pandas as pd
from bs4 import BeautifulSoup
import concurrent.futures
import time
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
👉 설치가 필요하다면?
pip install requests beautifulsoup4 pandas lxml
3️⃣ 주요 기능 구현
🔹 안정적인 세션 생성 (재시도 로직 포함)
def create_session():
session = requests.Session()
retry = Retry(total=5, backoff_factor=1, status_forcelist=[500, 502, 503, 504])
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
return session
🔹 최신 회차 가져오기
def get_max_count():
url = 'https://dhlottery.co.kr/common.do?method=main'
session = create_session()
try:
response = session.get(url, timeout=30)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'lxml')
max_count = int(soup.find('strong', id='lottoDrwNo').text)
return max_count
except Exception as e:
print(f"최신 회차 조회 중 오류 발생: {e}")
return None
finally:
session.close()
🔹 개별 회차 당첨번호 크롤링
이제 각 회차의 당첨번호를 가져오는 코드가 필요합니다.
하지만! 이 부분은 비공개 코드입니다.
📩 "블로그 구독 후 댓글을 남겨주시면 코드를 보내드립니다!"
Hint: BeautifulSoup을 사용해 div.num win 클래스에서 당첨번호를 가져오는 방식입니다!
직접 시도해보시고, 어려우시면 댓글 남겨주세요 😊
🔹 전체 데이터 수집 (병렬 처리 적용)
모든 회차 데이터를 가져오는 코드도 일부 생략했습니다!
✔ 병렬 처리로 속도를 높이는 방식
✔ ThreadPoolExecutor 활용
✔ pandas DataFrame으로 정리
📩 코드가 궁금하다면? 댓글을 남겨주세요! 😃
"구독 후 댓글 남겨주시면 전체 코드를 확인하실 수 있습니다!"
4️⃣ 코드 실행 예시
# 데이터 수집 실행
data = fetch_all_lotto_data()
# 결과 확인
print(data.head())
📌 완전한 코드를 원하신다면?
💬 1. 블로그를 구독해 주세요!
✉ 2. 댓글 남겨주세요!
🚀 앞으로도 Python 자동화 & 크롤링 꿀팁을 공유할 예정이니 많은 관심 부탁드립니다.