GGRS: Geoscience, GIS, & Remote Sensing

지구과학, GIS, 그리고 원격탐사 블로그입니다.

★Selenium(셀레늄): 파이썬에서 웹 브라우저 제어 자동화

댓글 0

IT

2021. 4. 20.

안녕하세요? 이번 글은 파이썬에서 웹 브라우저 상호작용을 자동화하는 Selenium(셀레늄) 패키지를 정리해 보겠습니다.

최종적으로 Selenium과 앞서 정리한 Beautiful Soup를 연동해서 크롤링을 진행할 것입니다. 이전 글은 아래와 같습니다.

 

Python: Requests와 Beautiful Soup를 이용한 파싱(parsing)

안녕하세요? 이번 글은 Python에서 Requests와 Beautiful Soup를 이용한 파싱(parsing) 예제를 정리해 보겠습니다. 파싱은 어떤 페이지(문서, html 등)에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출

blog.daum.net

PyPI에 등록되어 있는 Selenium 정보는 다음 링크를 참고하시면 되겠습니다.

 

selenium

Python bindings for Selenium

pypi.org

자, 일단 Jupyter Notebook을 실행하고 'Selenium' 패키지를 설치해 봅니다.

!pip install selenium

실습할 웹 브라우저는 '구글 크롬'입니다. 현재 내 크롬 버전을 확인해 볼까요?!

 

현재 내 크롬 버전은 'Chrome 맞춤설정 및 제어' 버튼 클릭하고 '설정' 클릭 후,

설정 하단 'Chrome 정보'를 클릭하시면 됩니다.

현재 버전은 다음과 같습니다.

이제 ChromeDriver 창에 들어가서,

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

sites.google.com

해당 크롬 버전(여기서는 Chrome version 90) 드라이버를 내려받습니다.

아래 링크에서 chromedriver_win32.zip을 내려받아 봅니다.

압축을 해제해 보면, 아래와 같은 실행 파일이 존재합니다.

이제 Selenium 패키지를 호출합니다.

from selenium import webdriver

크롬 드라이버 경로를 아래와 같이 지정합니다. 'Windows 보안 경고' 창은 '엑세스 허용'을 선택하시면 됩니다.

chromedriver = 'D:\GEODATA\chromedriver.exe'
driver = webdriver.Chrome(chromedriver)

전번 실습에서 호출했던 '국립공원' 검색 결과를 볼까요?! Selenium이 제공하는 title과 current_url을 출력해 보겠습니다.

driver.get('https://search.naver.com/search.naver?query=%EA%B5%AD%EB%A6%BD%EA%B3%B5%EC%9B%90&where=news&ie=utf8&sm=nws_hty')
print(driver.title)
print(driver.current_url)

스크린샷도 파일로 저장할 수 있습니다.

driver.save_screenshot('D:\GEODATA\IMG.png')

이번에는 Selenium과 Beautiful Soup를 연동해 봅니다. Beautiful Soup 코드는 이전 글과 동일합니다.

html_doc = driver.page_source

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.prettify())

이번에는 Selenium을 통해 검색결과 두번째 페이지로 이동해 보겠습니다. 2번을 우클릭한 후 '검사'를 클릭합니다.

아래와 같이 코드를 볼 수 있는데요,

여기서 2번에 해당하는 코드에서 우클릭 한 후 'Copy > CopyXPath'를 클릭해 줍니다.

XPath를 아래와 같이 위치시킨 후 'main_pack'으로 변경해주면 크롬 드라이버를 통해 2번째 링크를 클릭할 수 있습니다.

rslt = driver.find_element_by_xpath("//*[@id='main_pack']/div[2]/div/div/a[2]")
rslt.click()

이제 Selenium과 Beautiful Soup를 적절히 이용하셔서 원하시는 크롤링 등 작업을 진행해볼 수 있겠습니다. 어느 패키지를 쓰든지 사용자 지침서는 필수겠죠?! Selenium 사용자 문서는 한글로 제작되어 있는데요, 기여해주시는 분들께 감사의 마음을 전해 봅니다.

 

Selenium 브라우저 자동화 프로젝트 :: Selenium 문서

Selenium 브라우저 자동화 프로젝트 Selenium은 웹 브라우저의 자동화를 가능하게 하고 지원하는 다양한 도구와 라이브러리를 포함한 프로젝트입니다. 브라우저와의 사용자 간의 상호 작용을 테스

www.selenium.dev