1. Selenium이란?
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 설치
- 저는 위와 같이 이미 설치가 되어 있습니다.
** 공식 사이트: https://www.python.org/
3. Selenium 코딩 프로그램 등록 및 확인(PyCharm)
저는 코딩 프로그램으로 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 버전 확인
# Chromedriver 설치
- 다운로드 사이트: https://chromedriver.chromium.org/downloads
- 확인한 자신의 Chrome 버전과 맡는 드라이버를 선택해서 다운로드 받습니다.
- 설치한 경로를 기억해두세요!!
5. Selenium 시작
- selenium 라이브러리에서 webdriver 함수를 import 해줍니다.
- getpass는 보이지 않는 입력을 받기 위해 사용하였습니다.
- selenium에서 Chrome 자동화 작업 시 필요한 옵션들을 설정하였습니다.
- 실제 프로그램 동작과 연관이 없는 Error 내용 삭제를 위해 개발 로그를 숨기기 위한 옵션을 추가하였습니다.
- webdriver.Chrome('Chromedriver.exe 위치', options=options) // Chromedriver 위치와 설정한 옵션 연결
- driver = selenium_driver() // 현재까지 설정한 Selenium 옵션들을 drvier 변수에 연결
- driver.get(url) // 자동화 작업을 진행하고자 하는 Web 사이트 연결
Chrome Options: www.assertselenium.com/java/list-of-chrome-driver-command-line-arguments/
5-1. Element를 찾기 위한 정보 구하기
# 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)
# 버튼 클릭
- find_element_by_id('//*[@id="btnLogin"]').click()
6. 동작 테스트
# 옵션 주석 처리
- 설명을 위해 작성한 옵션들을 주석처리 해주겠습니다.
# 코드 실행
- 아래와 같이 로그인이 정상적으로 진행되었습니다.
다음 포스팅에서 실제 예약페이지 접속을 위한 팝업 삭제와 Tab 이동 등에 대해서 다뤄보겠습니다.
'Python > Parshing&Crawling' 카테고리의 다른 글
Selenium을 이용한 웹 크롤링 - 3 (Iframe 이동) (0) | 2020.12.04 |
---|---|
Selenium을 이용한 웹 크롤링 - 2 (세션 종료 및 이동) (0) | 2020.12.04 |
Parsing, Crawling 이란? (0) | 2020.12.03 |