파이썬 웹자동화 (1) 셀레니움 설치 및 환경설정, 웹드라이버 자동설치 (크롬드라이버 설치X)

이번 포스팅에서는 파이썬 웹자동화에 대한 첫 번째 글로 가장 기본적인 셀레니움 설치 및 환경설정, 그리고 네이버 자동로그인 예제까지 만들어보려고 합니다.

실은 기존에도 셀레니움 사용법 관련하여 많은 글들이 있지만 22년 말 셀레니움4 업데이트 이후로는 문법도 업데이트되어 코드 오류가 발생되는 경우가 많아 한꺼번에 정리해보았습니다.

셀레니움(Selenium)은 자동화 웹 브라우저 도구로, 웹 애플리케이션을 테스트하거나, 웹 브라우저를 제어하기 위해 사용됩니다. 셀레니움은 대부분의 브라우저와 프로그래밍 언어를 지원하며, 다양한 기능을 제공합니다.

이번 포스팅에서는 셀레니움 설치 방법과 기본 환경설정 방법을 정리해보았습니다. 셀레니움 설치 후 셀레니움4 이후에 업데이트된 웹드라이버 자동설치 방법과 더불어 웹페이지를 로딩하는 부분까지 정리해보았습니다


셀레니움 설치 방법

셀레니움은 파이썬(Python)과 함께 사용하기 위해서는 별도의 라이브러리를 설치해야 합니다. 다음은 셀레니움 설치 방법입니다.

  1. 파이썬(Python) 설치 셀레니움을 사용하기 위해서는 먼저 파이썬(Python)이 설치되어 있어야 합니다. 파이썬은 공식 홈페이지에서 다운로드 받을 수 있습니다. 참고로 파이썬 설치 방법 및 기본 툴인 VSCODE(비주얼스튜디오 코드) 설치 방법은 앞선 포스팅에 정리한 바 있습니다.
  2. 참고로 가상환경을 통해 라이브러리 버전 관리 또는 환경 분리, 빠른 개발환경 구성을 위해 가상환경 설정을 추천합니다. 해당 방법 역시 여기 포스팅에 정리한 바 있습니다.
  3. 셀레니움 라이브러리 설치 셀레니움 라이브러리를 설치하기 위해서는 파이썬의 패키지 관리자인 pip를 이용합니다. 터미널 또는 명령 프롬프트에서 다음 명령어를 실행합니다.
pip install selenium
셀레니움 설치

3. 셀레니움 4.0에서 가장 큰 개선 사항 중 하나는 OS와 브라우저 버전을 자동으로 감지하여 웹 드라이버(Web Driver)를 자동으로 설치하는 부분 입니다. 이전 버전에서는 Chrome Driver와 같은 웹 드라이버를 수동으로 다운로드하고 설치해야 했는데, 셀레니움 4.0에서는 이 과정이 자동화되어 훨씬 편리해졌습니다.

셀레니움 4.0은 브라우저 버전과 운영체제를 감지하여 자동으로 해당 버전에 맞는 웹 드라이버를 다운로드하고 설치합니다. 해당 운영체제와 브라우저 버전에 맞는 웹 드라이버를 자동으로 설치하여 작업을 보다 효율적으로 수행할 수 있습니다.

보통 크롬으로 작업하는 경우가 많으므로 아래와 같은 2가지 명령어를 통해 설치를 진행해줍니다.

참고로 셀레니움 설치 후 크롬드라이버가 설치되어 있으며 아래 명령어 실행 시 오류가 나타나는 경우가 있는 것 같습니다. 기존에 있는 웹드라이버는 삭제 후 실행하는 것을 추천합니다.

pip install chromedriver_autoinstaller
pip install webdriver-manager

chromedriver_autoinstaller는 Chrome 드라이버를 자동으로 다운로드하여 설치해주는 모듈입니다. 이 모듈을 사용하면 운영체제에 맞는 Chrome 드라이버를 자동으로 설치할 수 있습니다. 이렇게 하면 Chrome 드라이버를 수동으로 다운로드하고 설치할 필요가 없으므로 코드를 간결하게 유지할 수 있습니다.

webdriver-manager 모듈은 다양한 브라우저(Chrome, Firefox, Edge 등)에 대한 드라이버를 자동으로 다운로드하고 설치해주는 모듈입니다. 이 모듈을 사용하면 각 브라우저의 버전에 맞는 드라이버를 자동으로 다운로드하여 설치할 수 있습니다. 이렇게 하면 다양한 브라우저에서 Selenium을 사용할 때 드라이버를 수동으로 관리할 필요가 없으므로 코드를 간결하게 유지할 수 있습니다.

셀레니움 설치

파이썬 셀레니움 웹 드라이버 자동 설치 및 기본 코드

셀레니움을 사용하기 위해서는 먼저 웹 드라이버를 다운로드 받아야 합니다. 다음은 셀레니움을 이용하여 크롬 브라우저를 제어하는 기본 예제 코드입니다. 사실 기본 예제 코드라고 하기에는 너무 길어서 각 코드 행마다 주석을 달아두었습니다.

코드를 설명하자면, 이 코드는 Python에서 Selenium을 사용하여 Chrome 브라우저를 제어하고, https://itmanual.net 페이지를 로드하는 예제 코드입니다.

코드는 다음과 같이 동작합니다.

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
# Selenium 모듈에서 webdriver를 가져옵니다.
from selenium import webdriver
 
# Chrome 브라우저 옵션을 다루는 Options 클래스를 가져옵니다.
from selenium.webdriver.chrome.options import Options
 
# Chrome 드라이버 서비스를 다루는 Service 클래스를 가져옵니다.
from selenium.webdriver.chrome.service import Service
 
# Chrome 드라이버를 다운로드하고 설치하는 데 사용되는 ChromeDriverManager를 가져옵니다.
from webdriver_manager.chrome import ChromeDriverManager
 
# Options 클래스의 인스턴스를 생성합니다.
options = Options()
 
# Chrome 브라우저 창이 즉시 닫히는 것을 방지합니다.
options.add_experimental_option(‘detach’, True)
 
# 불필요한 콘솔 메시지를 제거합니다.
options.add_experimental_option(‘excludeSwitches’, [‘enable-logging’])
 
# Chrome 드라이버 서비스를 생성합니다.
service = Service(ChromeDriverManager().install())
 
# Chrome 브라우저를 실행하는 ChromeDriver 객체를 생성합니다.
driver = webdriver.Chrome(service=service, options=options)
 
# Chrome 브라우저에서 https://itmanual.net 페이지를 로드합니다.
driver.get(‘https://itmanual.net’)
 

각 코드 주요 요소에 대해 설명하자면 아래와 같습니다.

1. selenium 모듈에서 webdriver를 가져옵니다. 또한 Options 클래스를 가져와서 Chrome 브라우저 옵션을 설정합니다. Service 클래스를 가져와서 Chrome 드라이버 서비스를 관리합니다.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

2. ChromeDriverManager를 사용하여 Chrome 드라이버를 다운로드하고 설치합니다.

from webdriver_manager.chrome import ChromeDriverManager

참고로 필요시 아래와 같이 웹드라이버가 자동 설치됩니다.

셀레니움 설치

3. webdriver.Chrome 객체를 생성하여 Chrome 브라우저를 실행합니다. driver.get() 메소드를 사용하여 https://itmanual.net 페이지를 로드합니다.

driver = webdriver.Chrome(service=service, options=options)
driver.get('https://itmanual.net')

추가로

add_experimental_option 메서드는 Chrome 브라우저의 실험적인 옵션을 추가할 때 사용하는 메서드입니다. 이 메서드를 사용하면 Chrome 브라우저의 다양한 기능을 사용할 수 있습니다.

'detach': True 옵션은 Chrome 브라우저 창이 즉시 닫히는 것을 방지하는 옵션입니다. 이 옵션을 사용하면 Python 스크립트가 종료되어도 Chrome 브라우저 창이 열려있게 됩니다. 이렇게 하면 필요한 경우에 브라우저 창을 수동으로 닫을 수 있으므로 유용합니다.

'excludeSwitches': ['enable-logging'] 옵션은 불필요한 콘솔 메시지를 제거하는 옵션입니다. Chrome 브라우저를 실행하면 콘솔 메시지가 많이 출력되는데, 이 옵션을 사용하면 이러한 콘솔 메시지를 출력하지 않도록 설정할 수 있습니다. 이렇게 하면 로그 메시지가 줄어들어 디버깅이 쉬워집니다.


이번 포스팅에서는 셀레니움 설치 방법과 기본 환경설정 방법을 정리해보았습니다. 셀레니움 설치 후 셀레니움4 이후에 업데이트된 웹드라이버 자동설치 방법과 더불어 웹페이지를 로딩하는 부분까지 정리해보았습니다

다음 포스팅에서는 가장 기본적인 자동로그인 관련 글을 정리해보도록 하겠습니다. 셀레니움 기본 동작 관련해서 웹페이지를 열고 닫는 것과 find_element 사용법에 대해 알아볼 예정입니다.


앞선 포스팅에서 정리한 코딩 및 프로그래밍 관련 글은 아래와 같습니다.

ChatGPT API 사용 방법 3분내 끝내기 (1) Text-Davinci-003 특징 및 OpenAI 계정 생성하기

[파이썬 x VSCODE 기초] ② VSCODE 파이썬 설치 및 환경 설정

Leave a Comment