안녕하세요. 2022년 새해복 많이 받으시기 바랍니다.
개인적으로 작은 재미가 하나 있었으면 해서 매주 로또 구매하는 것을 올해의 작은 다짐 중 하나로 정했습니다.
그리고 생각 난 김에 귀차니즘을 해결하기 위해서 코드로 짜서 스케줄러에 등록을 해놨습니다.
파이썬+playwright로 작성했고 코드가 간단해서 주석을 참고하시면 될것 같습니다.
아래 코드가 보기 불편하신 경우 블로그를 참고하시기 바랍니다.
from playwright.sync_api import Playwright, sync_playwright
import time
# 동행복권 아이디와 패스워드를 설정
USER_ID = '유저ID'
USER_PW = '유저PW'
# 구매 개수를 설정
COUNT = 5
def run(playwright: Playwright) -> None:
# chrome 브라우저를 실행
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
# Open new page
page = context.new_page()
# Go to https://dhlottery.co.kr/user.do?method=login
page.goto("https://dhlottery.co.kr/user.do?method=login")
# Click [placeholder="아이디"]
page.click("[placeholder=\"아이디\"]")
# Fill [placeholder="아이디"]
page.fill("[placeholder=\"아이디\"]", USER_ID)
# Press Tab
page.press("[placeholder=\"아이디\"]", "Tab")
# Fill [placeholder="비밀번호"]
page.fill("[placeholder=\"비밀번호\"]", USER_PW)
# Press Tab
page.press("[placeholder=\"비밀번호\"]", "Tab")
# Press Enter
# with page.expect_navigation(url="https://ol.dhlottery.co.kr/olotto/game/game645.do"):
with page.expect_navigation():
page.press("form[name=\"jform\"] >> text=로그인", "Enter")
page.goto(url="https://ol.dhlottery.co.kr/olotto/game/game645.do")
# ---------------------------------------------
# 사용자 지정 번호 입력
# 여기서는 2와 24를 입력하고 나머지는 자동선택함
# ---------------------------------------------
# Click label:has-text("2")
page.click("label:has-text(\"2\")")
# Click label:has-text("24")
page.click("label:has-text(\"24\")")
# 나머지 숫자는 자동 선택함
# Click text=자동선택
page.click("text=자동선택")
# 구매할 개수를 선택
# Select 5
page.select_option("select", str(COUNT))
# Click text=확인
page.click("text=확인")
# Click input:has-text("구매하기")
page.click("input:has-text(\"구매하기\")")
time.sleep(2)
# Click text=확인 취소 >> input[type="button"]
page.click("text=확인 취소 >> input[type=\"button\"]")
# Click input[name="closeLayer"]
page.click("input[name=\"closeLayer\"]")
# assert page.url == "https://el.dhlottery.co.kr/game/TotalGame.jsp?LottoId=LO40"
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
참고로 '김비서로또샀나 '라는 무료 프로그램이 있는데, 구매가 가능한 시간에 알아서 구매를 해주는 프로그램 같습니다만, 번호를 지정할 수는 없고, 자동구매만 지원하는 듯 합니다.
올 한해 좋은일만 가득하시길 바랍니다.
요즘 배치파일등에 관심이 많아서 이것저것 검색해보곤 있는데 아무래도 비전문가라 이것저것 궁금한게 많네요 ㅎㅎ;;
제가 하고자하는건 고정IP를 이용해 내부네트웍 안에서 동시에 특정 키보드값을 날려주는건데 (ex. A,B,C 등)
구글링정도로 비전문가가 해낼 수 있을까요 ??
예제코드에서 5개 모두 '2', '24', '자동'인가요?
글 감사합니다 :)
구글에 김비서로또샀나 검색하시면 됩니다
playwright 배워갑니다.
블로그를 보다보니
가사도우미의 절도, 현장 검거 그리고 유죄 확정까지 1편이 있던데요.
그 이후가 궁금합니다.
비정상적인 방법으로 접속했다고 에러가 나네요 ㅡㅜ
43라인(page.goto(url="https://ol.dhlottery.co.kr/olotto/game/game645.do") 뒷줄에
page.locator("#popupLayerAlert").get_by_role("button", name="확인").click()
넣어주심 됩니다.
확인 자동 눌러주기 ㅋㅋㅋ