Python Library/웹 크롤링

[웹 크롤링 - Python] Selenium 프레임워크 및 웹 드라이버

바보1 2022. 2. 1. 00:46

1. Selenium 이란?

 

만약 우리가 웹 크롤링을 하는 과정에서 로그인이 필요한 경우에는 어떻게 해야할까? 일일이 우리가 로그인을 하고 안에 들어간 다음에 url 주소를 다시 줘야할까??

 

혹은 해당 웹사이트가 프로그램을 통한 접근을 막은 경우에는 어떻게 될까?? User-Agent를 바꾸면 해결할 수는 있지만, 인생이 그렇듯 하나의 방법으로는 불가능한게 너무 많다.

 

그렇다면 어떤 방법을 통해서 할 수 있을까? requests로는 한계가 있어보인다.

 

방법은 Selenium이다. Selenium은 마치 우리가 웹 사이트를 이용하는 것처럼 홈페이지를 제어할 수 있다.

 

사실 Selenium은 위와 같은 경우 때문에 생겨난 프레임워크가 아니다. 크롤링을 위한 프레임워크가 아니란 말이다. 사실 Selenium은 웹 사이트가 만들어질 때, 그것들은 테스트하기 위해 생긴 것이다. 

 

혹시 웹 사이트를 만든 적이 없다면 어쩔 수 없지만 만들어본 사람은 알 것이다.

 

웹 사이트가 제대로 작동하는지 알기 위해서는 수동으로 일일이 클릭해가면서 알아봐야 했다. 근데 귀찮으니까 원격으로, 수동이 아닌 자동으로 클릭하고 테스트하기 위해 만든 기술이 바로 'Selenium'이다.

 

하지만 프로그램을 통해서 크롤링하는 행위를 막는 수많은 웹 사이트 때문에 우리는 직접 브라우저를 제어하면서 크롤링을 할 수 있는 방법을 찾기 시작햇고, Selenium을 크롤링을 위한 목적으로 사용되기 시작했다.

 

즉 Selenium은 브라우저를 자동화 할 수 있는 자동화 도구라고 생각하면 된다!


2. 웹 드라이버

 

우선 Selenium을 사용하기 위해서는 웹 드라이버가 필요하다. 사실 Selenium과 웹 드라이버는 거의 형제라고 볼 수 있다.

 

우리가 설치할 웹 드라이버는 브라우저마다 서로 다르다. 크롬, 파이어폭스, 인터넷 익스플로러 등등 모두 자신만의 웹 드라이버가 있다.

 

웹 드라이버는 웹 사이트를 제어하기 위한 도구라고 생각하면 될 것 같다.

 

내가 이해한 바로는 셀레니움을 이용해서 웹 크롤링을 하기 위해서는 코드로 제어할 수 있는 웹 사이트가 필요한데, 그런 웹 사이트를 제어할 수 있는게 웹 드라이버이다.

 

따라서 셀레니움에서 웹 드라이버를 제어함으로써 동적으로 웹 크롤링을 할 수 있다고 난 이해했다.

 

난 크롬을 사용하기 때문에 크롬 웹 드라이버를 다운로드 받도록 하겠다.

 

일단 웹 드라이버를 다운로드 받기 위해서는 내가 지금 사용하고있는 크롬의 버전을 확인해야한다.

 

오른쪽 상단의 점 세개를 클릭 후, 도움말 -> Chrome 정보를 누르면 본인의 크롬 버전을 확인할 수 있다.

 

내 버전은 97이다.

 

이후, https://chromedriver.chromium.org/downloads 사이트에 들어가자.

 

들어간 이후에는 자신의 크롬 버전에 맞는 버전을 다운로드 받으면 된다.

 

다운로드를 하려고 들어가면 여러 파일이 나올텐데, 자신의 운영체제에 맞는 버전을 다운로드하면 된다!

 

 

이렇게 한 후 자신의 파이썬 공부를 하는 파일에 압축 해제를 하면 된다

 

그럼 끝이다!


3. Selenium 설치

 

설치 방법은 앞에서도 많이 했으니 간략하게 말하면은,

 

pip install selenium

이것과, 파이참이라면

 

setting 창에서 설치할 수 있다. 잘 모르겠다면 앞의 내용을 참고하면 될 것 같다.


4. 간단한 사용법

 

 

from selenium import webdriver

# webdriver을 통해 Chrome 웹 드라이버 객체를 만들어 줌
browser = webdriver.Chrome()

# Chrome 웹 드라이버 객체에게 get을 통하여 네이버의 HTTP 요청을 하게 만듬
browser.get("http://naver.com")

이게 끝이다.

 

실제로 이렇게 실행하면,

 

이렇게 웹 사이트가 나온다. 상단을 보면 Chrome에 의해 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다. 라는 문구가 나오는데, 이렇게 된다면 성공이다!


5. 요약

 

selenium과 웹 드라이버는 뗄래야 뗄 수 없는 관계이다.

 

Selenium을 통해 웹 드라이버를 제어하면서 우리가 드디어 동적인 웹 크롤링을 할 수 있게 되었다.

 

다음 내용부터는 Selenium을 사용하여 좀 더 심화된 방법에 대해 알아보겠다.