Selenium 은 웹 어플리케이션을 자동으로 테스팅할 때 사용하는 프레임 워크입니다. Python 과 많은 언어를 지원합니다. 앞에서 BeautifulSoup를 열심히 공부한 후 Web 크롤링에 사용하기 시작하면 더 필요한 기능이 생길 것입니다. 몇가지 예시 상황을 들어보겠습니다.
위 세 가지 경우를 모두 Selenium으로 조작할 수 있습니다.
Selenium을 사용하기 위해서는 웹 브라우저 드라이버와 'selenium' 라이브러리를 설치해야 합니다. 드라이버는 크롬을 대상으로 진행하였습니다.
(크롬 드라이버 설치 링크 : http://chromedriver.chromium.org/downloads )
pip install selenium
웹 브라우저는 Script 코드를 실행시킨 후 HTML 소스코드를 DOM의 형태로 나타낸다. 보통의 크롤러는 HTML 소스코드 내용에 접근하기에 페이지 내의 이벤트(ex. 버튼 클릭, 추가 창)에 대한 처리가 불가능하지만, 'selenium' 은 브라우저를 동반하여 DOM 에 직접 접근하여 크롤링할 수 있기 때문에 동적 웹을 크롤링하는데 효과적입니다. 우선 google 에 접속하는 코드를 작성해보겠습니다.
from selenium import webdriver
# 설치한 크롬 드라이버의 경로
path = "C:/crawling/chromedriver.exe"
driver = webdriver.Chrome(path)
driver.get('<https://www.google.com>')
# 드라이버를 닫습니다.
driver.close()
경로에 한글이 있으면 오류가 발생할 수 있습니다. 또한 영문으로 되어있음에도 경로 코드에서 오류가 발생하는 경우에는 첫번째 쌍따옴표 앞에 r을 붙이면 해결됩니다.
'selenium' 의 강점은 드라이버를 동반하기 때문에 로그인, 버튼 클릭 및 동적 웹을 크롤링할 수 있는 것에 있습니다. BeautifulSoup 크롤링과 같은 방법으로 HTML element 에 접근하는 방식으로 사용됩니다. element 가 지정되면 해당 element 에 값을 전달하거나 버튼의 경우 클릭을 할 수 있습니다.
개발자 모드로 접근하여, 좌측 상단의 다음과 같은 아이콘을 눌러줍니다.
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/24e8eabf-4538-4ec2-8e77-298f6047af5e/untitled
원하는 HTML element 를 클릭합니다.
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/44b66547-feac-40cd-b815-c419329136f9/untitled