본문 바로가기
Computer/Python

[업무자동화] Python Selenium

by gwanghee kim 2023. 1. 3.

Python은 가장 널리 사용되는 컴퓨터 언어로, 다른 언어들에 비해 상대적으로 쉽게 사용할 수 있는 언어입니다. 파이썬은 딥러닝, 시각화, 홈페이지 제작 등 다양한 영역에서 활용될 수 있지만 오늘은 특히 Selenium이라는 패키지를 이용한 업무 자동화에 대해 소개해드리고자 합니다.

[출처] https://xkcd.com/353/

Selenium은 웹 애플리케이션 자동화 및 테스트를 위한 포터블 프레임워크입니다(출처: 위키백과 셀레늄). 즉, 사용자가 직접 조작하지 않고도 미리 설정된 값을 통해 웹페이지를 조작할 수 있게 하는 프로그램입니다. 파이썬에서는 Selenium이라는 패키지를 통해 사용할 수 있습니다.

 

사실 Selenium을 검색해보시면 알겠지만 파이썬에서 Selenium이 가장 많이 쓰이는 곳은 웹스크래핑입니다. 어떤 요소를 클릭해야 정보가 출력되는, 자바스크립트로 만들어진 페이지에서 정보를 가져오기 위해서는 Selenium을 통해 웹에서 어떤 동작을 수행하고, 그 이후 requests와 beautifulsoup 등의 패키지로 해당 웹페이지의 html을 불러와서 텍스트를 처리하는 방식으로 웹스크래핑을 진행해야 할 필요가 있습니다. 하지만 Selenium으로 웹에서 어떤 동작을 하게 만들 수 있다는 것은 웹페이지에 접근하여 반복적으로 수행해야 할 업무를 자동화시킬 수 있다는 의미이기도 합니다. 이를테면 조건을 다르게 주면서 자료를 여러 번 호출해야 하는 일을 예로 들 수 있겠습니다.

 

파이썬에서 Selenium을 사용하기 위해서는 먼저 웹드라이버가 필요합니다. 이 글에서는 가장 보편적으로 쓰이는 크롬 드라이버를 기준으로 설명하겠습니다.

 

1. Chorme 브라우저의 버전 확인하기

현재 사용하고 있는 Chrome 브라우저와 호환되는 웹드라이버를 사용해야 하기 때문에 가장 먼저 본인의 Chrome 버전을 확인해야 합니다. 크롬 창 우측 상단의 점 3개를 누르면 설정으로 들어갈 수 있습니다. 설정에서 Chrome 정보를 누르면 본인의 Chrome 버전을 확인할 수 있습니다.

2. 호환되는 chormedriver 다운로드하기

https://chromedriver.chromium.org/downloads 이 사이트에서 호환되는 버전의 드라이버를 찾아서 다운로드하면 됩니다. 파이썬에서 드라이버를 호출하기 위해서 본인이 접근하기 쉬운 경로에 chormedriver 파일을 위치시키는 것을 추천드립니다.

 

3. Python에서 사용하기

앞선 단계에서 chormedriver를 다운로드하였다면 이제는 파이썬에서 사용할 차례입니다.

pip install selenium
conda install selenium

Anaconda를 사용하시는 경우 conda 명령어를 통해서도 설치할 수 있습니다. 설치가 문제없이 완료되었다면 다음과 같이 필요한 패키지와 함수를 불러옵니다.

import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

webdriver는 driver를 불러와서 사용하기 위해, Keys와 By는 각각 키보드의 키를 입력하거나 html에서 우리가 조작하고자 하는 웹페이지 속 요소의 정보를 사용하기 위해 불러온 함수들입니다. 

URL = 'https://www.google.com'

driver = webdriver.Chrome(executable_path='chormedriver가 위치한 경로')
driver.get(url=URL)

위의 URL에 본인이 접근해야 할 사이트의 주소를 입력합니다. 그 이후 executable_path에 chormedriver가 위치한 경로 정보를 입력해숩니다.

search_box = driver.find_element(By.CLASS_NAME,'gLFyf')
search_box.send_keys("python")
search_box.send_keys(Keys.ENTER)

웹페이지 내 특정 요소의 위치를 지정한 후, 동작시킬 수 있습니다. 위의 코드는 구글에서 python을 검색창에 입력한 후 엔터를 누르는 코드입니다. class name 이외에 xpath, id 등 여러 정보를 통해 내가 원하는 element에 접근할 수 있습니다. 엔터 이외에도 다양한 키를 사용할 수 있으며, 단축키를 입력하는 것도 가능합니다. 예를 들어 ctrl+A를 입력한다고 가정하겠습니다.

search_box.click()
search_box.send_keys(Keys.CONTROL,"a")

위의 코드는 구글 검색창을 클릭한 후 ctrl+A 단축키를 입력하는 코드입니다. ctrl+A 말고도 ctrl+C, ctrl+V 같은 자주 쓰이는 단축키도 동일한 방법으로 사용이 가능합니다.

 

댓글