웹 크롤링 관련해서 찾아보던 도중 단순한 html 파싱이 아닌
로그인이라던지 검색같은거를 자동으로 해서 데이터를 받아올 방법이 없을까 찾아보다가 셀레니움이라는 프레임워크를 알게 되었다.
파이썬에만 국한된 게 아니라 다른 언어들도 지원하지만 오랜만에 심플한 파이썬을 써 보기로 했다.
먼저 pip 명령어로 셀레니움과 데이터 파싱을 위해 beautifulsoup를 설치해주자.
# 셀레니움 설치
pip install selenium
# beautifulsoup 설치
pip install beautifulsoup4
설치가 완료되면 크롤링 프로그램에서 브라우저 역할을 할 드라이버를 받아주자.
[크롬드라이버]
http://chromedriver.chromium.org/downloads
여기에서 자신의 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명이 넘었다.
잠잠해져서 맘편하게 바깥 돌아다니는 생활은 언제 언제오려나...?😷
'Python' 카테고리의 다른 글
[Python]selenium-stealth를 이용한 Cloudflare 우회 (2) | 2022.02.22 |
---|---|
[Python] Twilio를 이용한 모바일 Voip 서비스 만들기 (1) | 2022.01.04 |
[Python] pandas를 이용하여 엑셀 데이터 뽑기 (0) | 2021.11.19 |
[Python] 오픈 API를 이용해 공휴일 정보 받아오기 (0) | 2021.07.22 |