본문 바로가기
Knowledge/IT, 인터넷

Playwright를 활용한 로또 자동 구매 프로그램 만들기-2

by MoSeoPAPA 2025. 3. 10.
반응형

Playwright를 활용한 로또 자동 구매 프로그램 만들기

6. 전체 코드


from playwright.sync_api import Playwright, sync_playwright
import time
import random

# 동행복권 계정 정보
USER_ID = '아이디'
USER_PW = '비밀번호'

# 구매 개수 설정
COUNT = 5
balance = ""

def generate_lotto_numbers(count):
    lotto_numbers = []
    for _ in range(count):
        lotto_numbers.append(sorted(random.sample(range(1, 46), 6)))
    return lotto_numbers

def run(playwright: Playwright) -> None:
    global balance
    
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    
    # 로그인 페이지로 이동
    page.goto("https://dhlottery.co.kr/user.do?method=login")
    
    # 아이디 및 비밀번호 입력
    page.fill("[placeholder=\"아이디\"]", USER_ID)
    page.fill("[placeholder=\"비밀번호\"]", USER_PW)
    page.press("form[name=\"jform\"] >> text=로그인", "Enter")
    
    # 로그인 완료 대기
    page.wait_for_load_state("networkidle")
    
    # 잔액 확인
    try:
        balance = page.locator(".top_menu .information .money strong").text_content()
    except:
        balance = "잔액 확인 실패"
    
    print(f"현재 잔액: {balance}")
    
    # 로또 구매 페이지 이동
    page.goto("https://ol.dhlottery.co.kr/olotto/game/game645.do")
    page.wait_for_load_state("networkidle")
    
    # 자동 번호 생성
    lotto_numbers = generate_lotto_numbers(COUNT)
    print(f"구매할 로또 번호: {lotto_numbers}")
    
    for numbers in lotto_numbers:
        for i in numbers:
            selector = f"#checkNumGroup > label:nth-child({2 * i + 1})"
            page.click(selector)

        page.click("text=확인")
        time.sleep(1)
    
    # 구매 버튼 클릭
    page.click("input:has-text(\"구매하기\")")
    time.sleep(2)
    
    # 최종 확인 버튼 클릭
    page.click("text=확인 취소 >> input[type=\"button\"]")
    
    # 창 닫기
    page.click("input[name=\"closeLayer\"]")
    
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)
        

위 코드는 Playwright를 활용하여 로또 자동 구매를 수행하는 전체 코드입니다.

반응형

댓글