Python - Selenium 맛보기 (동적 웹 페이지 크롤링)

컴퓨터/Python

728x90
반응형

서론

Python에서 Web의 데이터를 다루는 과정에서 Requests 라이브러리를 사용하는 방법은 한정적입니다.

특정 url에서 요청하여 이미 만들어진 HTML 문서를 가지고 와서 다루는 작용을 하기 때문입니다.

만약 javascript 등 다양한 방식으로 동적인 웹페이지를 다루기 위해서는 상당히 많은 제약조건이 발생합니다.

 

그래서 많은 개발자들은 사람이 크롬, 에지 등 웹브라우저를 작동하는 것처럼 Python에서 웹 브라우저를 작동하는 프로그램을 만들게 되었습니다. 이게 바로 selenium입니다. 

본 문에서는 이 selenium에 대해 간략하게 알아보도록 하겠습니다.

이후 구동하고 본격적인 내용은 다른 포스트에서 다루도록 하겠습니다. 

 

준비

Selenium을 사용하기 위해서는 2가지가 필요합니다.

  • Selenium 라이브러리
  • Selenium으로 동작할 수 있는 웹 브라우저 드라이버

즉 제어할 수 있는 소스코드 뭉치와 , 소스코드 뭉치로 동작하는 웹 브라우저 드라이버가 필요합니다.

 

라이브러리 설치는 pip를 통해 손쉽게 가능합니다.

pip install selenium

웹 브라우저 드라이버는 사용하고자 하는 컴퓨터에 설치되어 있는 브라우저의 종류와 버전에 알맞게 설치를 해야 합니다.

아래 링크를 통해 필요한 드라이버를 다운로드하세요 (본문에서는 크롬을 사용하도록 하겠습니다.)

 

웹 드라이버 구동하기

우선 라이브러리를 소스코드에서 사용하기 위해 선언해 주도록 합시다.

from selenium import webdriver

이후 크롬 드라이버를 구동해 주겠습니다.

from selenium import webdriver
# selenium 구동
browser = webdriver.Chrome()
input("원하는 url 입력 : ")

이러면 Python을 통해 크롬 브라우저가 구동됩니다.

! 위와 같이 Chrome()으로 구동을 할 경우 해당 드라이버가 동일한 프로젝트 폴더에 존재해야 됩니다.

추후에 다양한 방법으로 경로를 지정하는 방법에 대하여 서술하겠습니다.

원하는 url로 이동하기

input 함수를 이용해 원하는 url을 문자열로 입력받고 해당 웹 드라이버에서 원하는 url로 이동해 보도록 합시다.

 

from selenium import webdriver

# selenium 구동
browser = webdriver.Chrome()
str = input("원하는 url 입력 : ")
browser.get(str)

이처럼 사람이 직접 구동하는 것과 같이 Python에서 웹 드라이버를 구동하여 원하는 url을 이동할 수 있습니다.

 

Selenium은 왜 쓰는 것인가? 장점과 단점은?

단순하게 HTML 문서에서 Data를 취득하는 경우에도 Selenium을 사용할 수 있습니다. 

하지만 간단하게 사용해보는 과정에서도 알 수 있다시피, 직접 웹 브라우저를 구동하기 때문에 request 패키지와는 달리 javascript의 동작이나 사람이 하는 것과 유사한 동작을 구현할 수 있습니다. 

 

때문에 다양한 장애를 극복하기에 편리합니다. 다만, request와 비교해서 속도가 느리다는 단점이 있습니다.

 

결론적으로 Selenium이나 request나 적절한 영역에서 필요한 만큼 사용하여 크롤러를 만드는 것이 효과적입니다.

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :