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을 사용하여 좀 더 심화된 방법에 대해 알아보겠다.
'Python Library > 웹 크롤링' 카테고리의 다른 글
[웹 크롤링 - Python] BeautifulSoup(Requests, Selenium)의 응용(1) (0) | 2022.02.02 |
---|---|
[웹 크롤링 - Python] Selenium 사용법 (0) | 2022.02.02 |
[웹 크롤링 - Python] 응용 및 홈페이지 url 변경 크롤링 (2) | 2022.01.31 |
[웹 크롤링 - Python] BeautifulSoup 사용법 (2) | 2022.01.28 |
[웹 크롤링 - Python] BeautifulSoup4 라이브러리, lxml 모듈 (2) | 2022.01.28 |