Selenium 이란?

Selenium 은 웹 어플리케이션을 자동으로 테스팅할 때 사용하는 프레임 워크입니다. Python 과 많은 언어를 지원합니다. 앞에서 BeautifulSoup를 열심히 공부한 후 Web 크롤링에 사용하기 시작하면 더 필요한 기능이 생길 것입니다. 몇가지 예시 상황을 들어보겠습니다.

  1. 특정 페이지를 들어가서 정보를 가져온 후 다시 원래 페이지로 돌아와서 정보를 얻고 싶을 때
  2. 페이지에서 버튼들을 자동으로 누른 후 그 안의 정보를 가져오고 싶을 때
  3. 목록 페이지에 있는 링크들을 차례로 들어가 정보를 순차적으로 가져오고 싶을 때

위 세 가지 경우를 모두 Selenium으로 조작할 수 있습니다.

Selenium 설치하기

Selenium을 사용하기 위해서는 웹 브라우저 드라이버와 'selenium' 라이브러리를 설치해야 합니다. 드라이버는 크롬을 대상으로 진행하였습니다.

(크롬 드라이버 설치 링크 : http://chromedriver.chromium.org/downloads )

pip install selenium

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 핵심 기능

'selenium' 의 강점은 드라이버를 동반하기 때문에 로그인, 버튼 클릭 및 동적 웹을 크롤링할 수 있는 것에 있습니다. BeautifulSoup 크롤링과 같은 방법으로 HTML element 에 접근하는 방식으로 사용됩니다. element 가 지정되면 해당 element 에 값을 전달하거나 버튼의 경우 클릭을 할 수 있습니다.

Element 접근하기

  1. 개발자 모드로 접근하여, 좌측 상단의 다음과 같은 아이콘을 눌러줍니다.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/24e8eabf-4538-4ec2-8e77-298f6047af5e/untitled

  2. 원하는 HTML element 를 클릭합니다.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/44b66547-feac-40cd-b815-c419329136f9/untitled