이번 포스팅에서는 파이썬 웹자동화에 대한 첫 번째 글로 가장 기본적인 셀레니움 설치 및 환경설정, 그리고 네이버 자동로그인 예제까지 만들어보려고 합니다.
실은 기존에도 셀레니움 사용법 관련하여 많은 글들이 있지만 22년 말 셀레니움4 업데이트 이후로는 문법도 업데이트되어 코드 오류가 발생되는 경우가 많아 한꺼번에 정리해보았습니다.
셀레니움(Selenium)은 자동화 웹 브라우저 도구로, 웹 애플리케이션을 테스트하거나, 웹 브라우저를 제어하기 위해 사용됩니다. 셀레니움은 대부분의 브라우저와 프로그래밍 언어를 지원하며, 다양한 기능을 제공합니다.
이번 포스팅에서는 셀레니움 설치 방법과 기본 환경설정 방법을 정리해보았습니다. 셀레니움 설치 후 셀레니움4 이후에 업데이트된 웹드라이버 자동설치 방법과 더불어 웹페이지를 로딩하는 부분까지 정리해보았습니다
셀레니움 설치 방법
셀레니움은 파이썬(Python)과 함께 사용하기 위해서는 별도의 라이브러리를 설치해야 합니다. 다음은 셀레니움 설치 방법입니다.
- 파이썬(Python) 설치 셀레니움을 사용하기 위해서는 먼저 파이썬(Python)이 설치되어 있어야 합니다. 파이썬은 공식 홈페이지에서 다운로드 받을 수 있습니다. 참고로 파이썬 설치 방법 및 기본 툴인 VSCODE(비주얼스튜디오 코드) 설치 방법은 앞선 포스팅에 정리한 바 있습니다.
- 참고로 가상환경을 통해 라이브러리 버전 관리 또는 환경 분리, 빠른 개발환경 구성을 위해 가상환경 설정을 추천합니다. 해당 방법 역시 여기 포스팅에 정리한 바 있습니다.
- 셀레니움 라이브러리 설치 셀레니움 라이브러리를 설치하기 위해서는 파이썬의 패키지 관리자인 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 계정 생성하기