카테고리 없음

Python_SkillUP 2주차 (파이썬 연구수업)

INVENT_GUY 2019. 9. 23. 08:04

파이썬 스킬업 2주차.

오늘은 xpath에 대해서 공부.

그리고 selenium모듈을 사용하여 웹 자동화에 대해서 공부.

 

첫 번째 예제

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

#driver = 크롬창
driver = webdriver.Chrome('./chromedriver')
driver.get('https:/www.naver.com')
driver.implicitly_wait(150)

#검색창 저장
search = driver.find_element_by_xpath('//*[@id="query"]') #검색창 탐색후 저장
search.send_keys('디랩')
search.send_keys(Keys.ENTER)

#자동종료
time.sleep(5)
driver.close()

이 예제는 selenium모듈을 가져오고, 크롬드라이버로 크롬창을 켜고 네이버를 킨다.

그리고 네이버 검색창의 xpath를 가져와서 검색어로 '디랩'을 주고 엔터키를 누르고, 5초후 자동으로 종료하는 프로그램이다.

(크롬드라이버는 따로 설치가 필요함 : https://chromedriver.chromium.org/downloads여기서 자신의 크롬 버전보다 하위 버전을 받기.)

 

오늘의 메인, 1to50 게임.

이 게임은 매우 단순한 게임이지만, 사람이 빠르게 하긴 어려우므로 오늘 웹 자동화로 게임을 자동화 시켰다.

(1부터50까지 숫자가 나오는데 빨리 50까지 누르는 게임. (그지같은 게임!))

(http://zzzscore.com/에서 플레이할수 있다. 이 페이지의 개발자 도구 창에서 xpath를 가져옴.)

1to50 게임

# 참조
from selenium import webdriver
import time

# 크롬창 제어 - 사이트 열기(get)
driver = webdriver.Chrome('./chromedriver')
driver.get('http://zzzscore.com/1to50')
driver.implicitly_wait(7)

# 목표 숫자
num = 1

while num <= 50 :
    # 모든 버튼 가져오기
    btns = driver.find_elements_by_xpath('//*[@id="grid"]/div') # 각 버튼들이 모 리스트로 묶여서 반환됨
    # print(len(btns))

    # 조회해서 정답 찾기!
    for btn in btns :
        #print(btn.text)
        if btn.text == str(num) :
            btn.click()
            num += 1

^ : 코드

 

코드설명 : 셀레니움모듈의 웹드라이버를 가져오고 크롬을 열고 zzzscore.com/1to50 으로 들어간다.

(implicitly_wait(num)은 페이지가 열릴때 까지 기다려주고 열리고 나서의 딜레이를 밀리세컨즈로 준다. (매우 중요!))

그리고 조건이 틀릴때 까지 각 버튼의 xpath를 구해와서 현재의 숫자와 일치하면 그 버튼을 클릭한다.

이렇게 되면 사람이 1분 넘게 걸릴것을 5초 정도로 금방 끝내버린다!

 

_________________________________________________________________________________

 

이렇게 오늘의 포스팅을 마친다.

(참고 : 우클릭이 막혀있는 사이트에서 크롬의 개발자도구 창의 자바스크림트 무력화(체크박스 체크)시키면 

우클릭 막힘이 뚤린다. (개꿀 팁))