본문 바로가기
Python

[Python] 셀레니움(Selenium)을 이용한 브라우저 동적 크롤링

by 태진아밴드 2020. 12. 16.

웹 크롤링 관련해서 찾아보던 도중 단순한 html 파싱이 아닌

 

로그인이라던지 검색같은거를 자동으로 해서 데이터를 받아올 방법이 없을까 찾아보다가 셀레니움이라는 프레임워크를 알게 되었다.

 

파이썬에만 국한된 게 아니라 다른 언어들도 지원하지만 오랜만에 심플한 파이썬을 써 보기로 했다.

 

먼저 pip 명령어로 셀레니움과 데이터 파싱을 위해 beautifulsoup를 설치해주자.

 

# 셀레니움 설치
pip install selenium
# beautifulsoup 설치
pip install beautifulsoup4

 

설치가 완료되면 크롤링 프로그램에서 브라우저 역할을 할 드라이버를 받아주자.

 

 

[크롬드라이버]

http://chromedriver.chromium.org/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org

여기에서 자신의 OS에 해당하는 파일을 받으면 되는데 중요한 건

 

자신의 현재 크롬 브라우저 버전과 동일한 버전으로 받아야 한다.

 

다른 버전을 받게 되면 이후 실행할 때 아래 같은 메시지가 발생할 것이다..😂

 

( 에러 로그 안 보고 왜 안되지 하다가 삽질했던 건 함정 )

 

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 80

 

드라이버 설치를 완료한 뒤 파이썬을 통해 브라우저를 먼저 띄워보자.

 

# 설치된 셀레니움을 불러온다
from selenium import webdriver

# 드라이버가 설치된 경로
driver = webdriver.Chrome('/Users/dev2bmw3/dev/selenium/chromedriver')
# 접속할 페이지 URL
driver.get('https://www.naver.com/')

그러면 이렇게 짜잔하고 입력한 페이지가 띄워지게 된다!

 

여기에서 우리는 자동으로 검색어가 입력된 뒤 그 결과를 가져와보자.

 

( 물론 굳이 이런식으로 하지 않고 해당 주소에 쿼리스트링으로 붙여서 불러와도 되긴하지만 응용하는 차원에서 배워보자. ) 

 

# 설치된 셀레니움을 불러온다
from selenium import webdriver
# 설치된 BeautifulSoup를 불러온다
from bs4 import BeautifulSoup

# 드라이버가 설치된 경로
driver = webdriver.Chrome('/Users/dev2bmw3/dev/selenium/chromedriver')
# 접속할 페이지 URL
driver.get('https://www.naver.com/')

# 검색창에 입력할 검색어 전송
driver.find_element_by_id('query').send_keys('코로나 현황')
# 검색버튼 클릭
driver.find_element_by_id('search_btn').click()

html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')

# 일일 확진자 태그 가져오기
status_today = soup.select('.status_today')
# 텍스트만 출력
print(status_today[0].get_text())

 

요새 다시 또 코로나가 극성인 관계로 코로나에 대해 검색해보고 일일 확진자 현황을 가져오는 걸 만들어봤다.

 

이제 다시 실행시켜보면?

 

 

브라우저 검색결과
파이썬 콘솔창

 

이렇게 브라우저에 나와있는 결과를 동일하게 파싱해오는걸 확인 할 수 있다.

 

좀더 활용해보면 재밌는걸 많이 만들어 볼 수 있을거 같다!

 

그나저나 벌써 코로나가 또 1000명이 넘었다.

 

잠잠해져서 맘편하게 바깥 돌아다니는 생활은 언제 언제오려나...?😷