-Selenium
-ChromeWebDrvier
셀레니움(Selenium)은 웹 애플리케이션 자동화 및 테스트를 위한 포터블 프레임워크이다. 셀레니움은 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 플레이백 도구를 제공한다. (셀레니움 IDE) C 샤프, 그루비, 자바, 펄, PHP, 파이썬, 루비, 스칼라 등 수많은 유명 프로그래밍 언어들에서 테스트를 작성하기 위한 테스트 도메인 특화 언어(Selenese)를 제공한다. 이 테스트들은 현대의 대부분의 웹 브라우저에서 수행이 가능하다. 셀레니움은 윈도우, 리눅스, macOS 플랫폼에서 디플로이된다. 아파치 2.0 라이선스로 배포되는 오픈 소스 소프트웨어이다. 웹 개발자는 무료로 다운로드, 사용할 수 있다.
BeautifulSoup 라이브러리만으로도 다양한 사이트의 정보를 추출할 수 있다. 그런데, 자바 스크립트가 발전하면서 Ajax(비동기 통신) 형태로 서버와 데이터를 주고 받아 화면에 뿌려주는 사이트가 많아졌다. 이러한 형태로 데이터를 주고 받으면 URL 변경이나 새로고침 없이 데이터를 가져오게 된다.
이때, 데이터를 가져오지 못하는경우가 생기는데...
이를 방지하고 동적 데이터를 불러올 수 있는 것이 바로 Selenium
Selenium을 써야하는 이유는 아래와 같다
- 동적 데이터를 크롤링하기 위해
- 다양한 HTML 요소에 클릭, 키보드 입력 등 이벤트를 주기 위해
- 자동화테스트
그렇다면, 바로 Selenium을 사용하러 가보자
pip install selenium
크롬 브라우저를 제어하기 위한 드라이버지만 IE,FireFox등 다양한 브라우저도 제공한다.
https://chromedriver.chromium.org/downloads 로 이동해서 자신의 크롬버전 및 운영체제와 동일한 드라이버를 다운로드하기
from selenium import webdriver
driver = webdriver.Chrome()
url = 'https://www.google.com'
driver.get(url)
driver 경로를 파일경로와 다른 곳에 둘 경우
from selenium import webdriver
driver = webdriver.Chrome('driver의경로')
url = 'https://www.google.com'
driver.get(url)
driver.find_element < 찾는 엘리먼트 중 첫번째
driver.find_elements < 모든 엘리먼트
driver.find_element(By.CLASS_NAME, "")
driver.find_element(By.ID, "")
driver.find_element(By.CSS_SELECTOR, "")
driver.find_element(By.NAME, "")
driver.find_element(By.TAG_NAME, "")
driver.find_element(By.XPATH, "")
driver.find_element(By.LINK_TEXT, "")
driver.find_element(By.PARTIAL_LINK_TEXT, "")
위 명령어들을 통해 웹 페이지의 속성값들을 가져오고 driver. 명령어로 수행할 수 있다.
이번 주 주말에 마침 selenium 작성해 보려던 참이었는데 참고해서 잘 해보겠습니다 ㅎㅎ!