일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- java
- 알고리즘
- Python
- 경제뉴스 요약
- 상한가 분석
- 이진우의 손에 잡히는 경제
- 코딩테스트
- 급등주
- 손에 잡히는 경제 요약
- 코테
- 급등주 분석
- 경제
- 주식 분석
- 주식 상한가
- 경제뉴스
- 이진우
- Programmers
- 상한가 이유
- 손경제 요약
- 테마주
- 상한가
- 자바
- 파이썬
- boj
- 손경제
- 백준
- 급등 이유
- 프로그래머스
- 주식
- 손에 잡히는 경제
- Today
- Total
Completion over Perfection
파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-1탄 - 개발 구현) 본문
파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-1탄 - 개발 구현하기)
그럼 실제 파이썬으로 구현해보도록 하겠습니다.
셀레니움 Selenium 으로 자동화 할 예정이므로,
셀리니움 Selenium 에서 웹드라이버 webdriver를 불러와줍니다.
아직 설치가 되어있지 않다면 pip install selenium 명령어를 통해 설치해줍니다.
from selenium import webdriver
브라우저는 크롬으로 구현하도록 하겠습니다.
크롬 웹드라이버를 다운받아 압축을 풀어줍니다.
1. 크롬 웹브라우저를 다운받아 설치하고 경로를 설정하자
현 시점 (2020.06.27) 기준으로 크롬은 83버전이 배포되어 있으므로,
웹드라이버도 83버전으로 받아줍니다.
https://chromedriver.chromium.org/downloads
받고 아무데나 설치해줍니다.
저는 Download 폴더 안에 그냥 압축 풀었습니다.
저는 맥북을 사용하고 있으므로 아래의 경로가 되겠네요.
/Users/{맥북세팅시 처음 설정한 유저명}/Downloads
윈도우를 사용하시는 분들의 경우 대략 아래와 같은 형태가 될 것입니다.
C:/Users/{유저명}/Downloads/Chromedriver_win32/Chromedriver.exe
그럼 이 경로를 잘 기억해 두었다가 파이썬 코드에 넣어서 실행해봅시다.
코드는 아래와 같습니다.
cpath = '/Users/{유저명}/Downloads/chromedriver'
driver = webdriver.Chrome(executable_path=cpath)
위처럼 코드를 짜면 이제 자동으로 크롬 웹드라이버 Chrome webdriver를 사용할 수 있습니다.
2. 동행복권 URL로 접속하도록 세팅
동행복권의 사이트주소는 알아보니 아래와 같습니다.
동행복권 : https://dhlottery.co.kr/common.do?method=main
위의 주소로 접속하도록 웹드라이버 webdriver 의 get 명령어를 사용하여 코드를 짜보겠습니다.
driver.get('https://dhlottery.co.kr/common.do?method=main')
3. 셀레니움 Selenium 웹드라이버 webdriver로 거슬리는 팝업창을 닫아보자!
잘 띄워지는데 보기싫은 팝업창이 2개가 뜨네요.
그냥 진행해도 되지만, 제거해주고 가도록 하겠습니다.
팝업창을 제거하려면 먼저 닫고자 하는 팝업창으로 웹드라이버 webdriver 를 전환 switch 시켜주어야 합니다.
웹드라이버는 한번에 한 가지의 창만 컨트롤 할 수 있기 때문이죠.
팝업창이 두개이므로 각각 한번씩 팝업창으로 전환해준뒤에 close명령을 통해서 창을 닫아보도록 하겠습니다.
그럴려면 먼저 저 팝업창에 대한 ID가 필요합니다.
웹드라이버에서는 띄우는 창마다 고유의 ID를 부여합니다.
그 ID를 알아낸 뒤에 해당창으로 전환해! 라고 명령하면 그 창을 컨트롤 할 수 있게 됩니다.
아래 코드를 통해서 창 ID를 알아내보도록 하죠.
windows_list = driver.window_handles
print(windows_list)
이렇게 쳐서 실행해보니 아래와 같이 3개의 창 ID가 출력됩니다.
['CDwindow-CFE0786949DBE534DB15F4790A397490',
'CDwindow-AE9063F29E9667DA1051226D5579233B',
'CDwindow-F7824C3E3D5E5ACE9272C199CA07AD28']
첫번째 창 ID는 우리가 처음부터 띄웠던 동행복권 메인사이트에 대한 창일거에요.
따라서 두번째와 세번째 창만 선택해서 닫아보도록 하겠습니다.
아래와 같이 for 문을 돌려서 하나씩 차례대로 닫아줍니다.
cnt = 1
for i in range(2):
driver.switch_to.window(windows_list[cnt])
driver.close()
cnt+=1
4. 실제 로또를 1개만 구매해보자!
이제 팝업창도 모두 닫았으니 로그인을 해보도록 하겠습니다.
로그인 버튼을 클릭하기 전에,
우리는 팝업창 2개를 닫고 다시 메인창을 선택하지 않은 상태이기때문에
메인창에 대한 컨트롤을 하려면 메인창으로 다시 전환을 해줘야 합니다.
아래와 같이 코드를 짜주고 실행하면 다시메인창이 선택이 됩니다.
main_window = driver.window_handles[0]
driver.switch_to.window(main_window)
창이 다시 전환되었으니 이제 로그인을 해보도록 하겠습니다.
로그인 버튼은 우측 상단에 위치하고 있습니다.
개발자 도구를 통해 element값을 가져와봅시다.
element값을 가져오는 방법은 크롬 개발자도구(F12)를 열고,
요소선택을 통해서 진행하면 됩니다.
아래 스크린샷에서 1번을 클릭하고 2번을 클릭해줍시다.
위의 순서대로 누르면 특정 코드가 하이라이트 될 겁니다.
하이라이트 된 코드 위에서 마우스 우클릭 후 복사 > xpath 복사를 눌러줍니다.
그럼 xpath가 클립보드에 복사되었고, 파이썬에서 해당 경로를 활용해 클릭이 되도록 해봅시다.
아래와 같이 코드를 짜주면 xpath를 통해 로그인 element를 선택하게 되고,
클릭까지 하게 됩니다.
driver.find_element_by_xpath('/html/body/div[1]/header/div/div[2]/form/div/ul/li[1]/a').click()
쓰다보니 너무 길어져서,
로그인 이후 과정은 2-2탄으로 넘길게요~
'파이썬 (Python)' 카테고리의 다른 글
파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (2-2탄 - 개발 구현) (0) | 2020.07.02 |
---|---|
파이썬 - session not created from tab crashed 에러 해결하기 (0) | 2020.06.29 |
파이썬 - 딕셔너리 안의 리스트에서 특정 키 값만 가져오기 (4) | 2020.06.10 |
파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (1탄 - 기획하기) (2) | 2020.06.02 |
Python(파이썬) 중괄호('{}')가 이미 포함된 문자열 포맷팅 방법 (1) | 2020.05.24 |