Beautifulsoup 등 기존 크롤러들의 한계를 극복하기 위해 마우스, 키보드의 동작이나 디스플레이에 바로 나타나는 HTML과의 상호작용을 할 수 있는 Python 라이브러리 중 하나이다. 예를 들어, 자동으로 ID나 PW를 받아 로그인을 해주거나, 팝업을 지워주거나, 페이지를 이동하는 작업 등을 할 수 있다.
2. Selenium 설치
설치 전에 본인의 Python 버전 및 실행 위치 등을 체크해줍니다.
- Powershell 실행 > python >>> import sys >>> sys.executable - 저는 3.8.1 버전을 사용하고 있습니다. - 현재 Python 공식 사이트 기준 3.9.0 버전까지 출시가 된걸로 확인이 됩니다. >>> Ctrl+Z >>> Enter //Python 쉘 종료 - 설치 전 pip를 최신 버전으로 업그레이드 시켜 줍니다. > pip install --upgrade pip
- 저도 20.2.4 버전으로 업데이트가 되었습니다. > pip install selenium //Selelnium 설치
- 저는 위와 같이 이미 설치가 되어 있습니다.
저는 코딩 프로그램으로 PyCharm을 사용하여 PyCharm에 등록된 Python Interpreter에 Selenium 라이브러리가 정상적으로 설치되었는지 확인해 보겠습니다.
- PyCharm 실행 - File-Settings-[Project: 파이썬 실행할 프로젝트 이름]-Python Interpreter - 위의 사진 같이 볼 수 있는데 제 인터프리터 경로를 보시면 아까 Powershell에서 보신 경로와 동일합니다. - 그렇기 때문에 위와 같이 사용 가능한 Package 목록에 selenium 라이브러리가 있는 것을 보실 수 있습니다.
4. Chromedriver 설치
Selenium은 자동으로 웹을 제어하기 때문에 이를 보조해주기 위한 Web Driver가 필요합니다.
저는 Chrome을 사용하여 진행하였기 때문에 Chromedriver를 설치해주겠습니다.
# Chrome 버전 확인 - Chrome 접속 - 설정 - Chrome 정보 - Chrome 버전 확인
- selenium 라이브러리에서 webdriver 함수를 import 해줍니다. - getpass는 보이지 않는 입력을 받기 위해 사용하였습니다. - selenium에서 Chrome 자동화 작업 시 필요한 옵션들을 설정하였습니다. - 실제 프로그램 동작과 연관이 없는 Error 내용 삭제를 위해 개발 로그를 숨기기 위한 옵션을 추가하였습니다. - webdriver.Chrome('Chromedriver.exe 위치', options=options) // Chromedriver 위치와 설정한 옵션 연결 - driver = selenium_driver() // 현재까지 설정한 Selenium 옵션들을 drvier 변수에 연결 - driver.get(url) // 자동화 작업을 진행하고자 하는 Web 사이트 연결
# Element를 찾기 위한 ID 정보 구하기 - 아래 그림의 ID 정보 확인(빨간줄) # Element를 찾기 위한 Xpath 정보 구하기 - Selenium을 이용하고자 하는 사이트 접속 - F12 // 개발자 도구 실행 - 테스트 사이트: https://www.plazacc.co.kr/plzcc/irsweb/golf2/member/login.do
- 위의 사진처럼 나오실텐데 여기서 화살표 버튼을 눌러 Element를 얻기위한 부분 클릭 - 그러면 위의 사진처럼 선택된 부분의 Element가 블록 표시가 됩니다. - 오른쪽 버튼 클릭 - Copy - 종류 선택
# Element find에 사용가능한 옵션들
5-2. Element 조작
# Element에 데이터 입력 이나 클릭 동작 실행
# Login 정보 입력 - find_element_by_id('username').send_keys(id) - find_element_by_id('password').send_keys(password)