Python - Selenium3 ( 입력 / 클릭)

컴퓨터/Python

728x90
반응형

서론

지난 포스트를 읽었다면 아래의 과정을 사용할 수 있거나, 사용하는 방법을 익힐 수 있을 겁니다.

  • Web드라이버의 구동
  • Get요청 
  • 작업이 완료될 때까지 적절하게 대기하기
  • 원하는 요소의 정보를 추출하기

그렇다면, 원하는 정보를 추출한 이후에 다시 검색을 하거나, 다음 페이지로 넘어가거나 이런 다양한 제어의 동작을 해야 지만이 크롤러 BOT으로서 조금 더 적합한 녀석이 될 수 있습니다.

본문에서는 Selenium을 통해 이런 제어를 어떻게 하는지 알아보도록 하겠습니다.

 

클릭하기 -. click()

우선 조금 더 제어를 활용하기 쉽게 현 블로그를 예제로 해도 록 하겠습니다.

browser = webdriver.Chrome()
browser.get('https://blog-of-gon.tistory.com/category/컴퓨터/Python')

자 위와 같은 페이지를 Web드라이버를 통해 얻었다면, 그중 필요한 요소를 먼저 얻도록 하겠습니다.

items = browser.find_elements(By.CLASS_NAME,'link_category')

이후 click를 호출하여 클릭을 해주도록 합니다.

여기서 동작의 변화를 알기 위해 강제적으로 5초 정도 이후에 클릭을 해보겠습니다.

#클릭 구현하기
items = browser.find_elements(By.CLASS_NAME,'link_category')
time.sleep(5)
items[0].click()

이제 원하는 페이지로 마치 사람이 클릭하는 것과 같은 동작을 익혔습니다.

 

입력하기 - send_key()

그렇다면 이제 selenium을 통해 검색을 해보도록 합시다. 검색을 하는 과정을 생각해보면 다음과 같습니다.

  • 검색어를 입력할 요소를 찾는다.
  • 원하는 검색어를 입력한다.
  • 엔터 또는 클릭을 한다.

여기서 모르는 부분은 2가지가 있네요 문자열을 입력하는 방법과 엔터를 하는 방법 말이죠.

 

우선 검색을 하기 위해 검색란으로 이동하겠습니다. 그다음 검색어를 입력하는 요소까지 얻어오겠습니다.

#검색란 이동
items = browser.find_elements(By.CLASS_NAME,'btn_search')
items[0].click()
#검색창 접근
items = browser.find_elements(By.CLASS_NAME,'inp_search')

이후 send_key() 함수를 통해 키보드를 동작할 수 있습니다.

#검색창 접근
items = browser.find_elements(By.CLASS_NAME,'inp_search')
items[0].send_keys('Python')

이제 검색을 할 방법은 어딘가 있을 검색 버튼을 클릭 또는 엔터를 통해 서버에게 전송해주어야 합니다.

그렇다면, 과연 엔터는 어떻게 하는 것인가?

send_keys() 함수는 문자열뿐 아니라 키보드의 버튼을 누르는 것과 유사한 함수입니다.

즉 키보드 버튼의 명령어 또한 입력할 수 있습니다.

키보드의 버튼을 누르기 위해서 해당 모듈을 추가하고 사용해 보도록 합시다.

from selenium.webdriver.common.keys import Keys

#검색란 이동
items = browser.find_elements(By.CLASS_NAME,'btn_search')
items[0].click()
#검색창 접근
items = browser.find_elements(By.CLASS_NAME,'inp_search')
items[0].send_keys('Win32')
#키 입력하기
items[0].send_keys(Keys.ENTER)

Keys.ENTER를 통해 엔터키 입력을 하면 아래와 같은 결과가 나오게 됩니다.

본문에서는 Selenium을 통해 클릭과 키 입력을 하는 방법에 대해서 알아봤습니다.

Selenium을 통해 크롤링을 할 최소의 지식은 어느 정도 습득했습니다.

마지막으로 Keys클래스를 통해 키 입력을 하는 속성 값을 언급하면서 포스트를 마무리하겠습니다.

Keys.properties - 속성값 

해당 모듈에서 Keys라는 클래스 내에 속성 값의 형태로 키보드 명령에 대한 값이 정해져 있습니다. 

자세히 알 필요 없이 속성 값의 이름은 무엇이 있는지 알아보도록 하겠습니다.

  • NULL
  • CANCEL
  • BACKSPACE
  • TAB
  • CLEAR
  • SHIFT
  • ENTER
  • CONTROL
  • PAGE_UP
  • PAGE_DOWN

등등 많은 명령어가 존재하는데 직관적이어서 직접 사용해보는 것이 좋을 듯합니다.

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :