본문 바로가기
Cording/Pyhon_크롤링

Python] Selenium 자동 스크롤 / Headless Chrome - 코드 포함

by €€£¥ 2022. 12. 11.

Selenium 을 사용시 웹페이지에 따라 원하는 자료를 브라우저에 표시하기 위해서는 스크롤이 필요한 경우가 있다. 그런 경우를 위한 자동 스크롤과 실제 브라우저창을 생성하지 않고 실행하는 Headless Chorme의 사용법을 정리해보았다.

 

 

셀레니움_Selenium을 사용한 웹페이지 자동 스크롤 하는 방법

Python 라이브러리 셀레니움_Selenium 을 사용해서 웹브라우저를 컨트롤 하여 크롤링을 진행할 때, 웹페이지에 따라서는 원하는 정보를 브라우저에 표시하기 위해서는 마우스 스크롤을 해야 하는 경우가 있다. 이런 경우를 위해서 자동으로 스크롤을 하는 방법을 알아 보도록 하자. 

 

기본적인 셀레니움_Selenium의 설치 방법 및 세팅 방법에 대해서는 앞선 포스팅에서 정리해두었기 때문에 해당 부분이 궁금한 분들은 아래의 링크로 앞선 포스팅을 참고해주길 바란다. 

Python] Selenium 기본 세팅 및 사이트 호출방법 - 코드포함

 

Samla's Study

News & Issues about Economy // About Chess

getitall.tistory.com

 

바로 코드와 함께 설명 들어가겠다. 웹페이지의 특정지점까지 자동으로 스크롤을 하는 방법과 페이지의 마지막 즉, 더이상 스크롤을 할 수 없는 지점까지 자동으로 스크롤을 하는 2가지 코드이다. 하기 코드를 사용하면 되겠다.

from selenium import webdriver
driver=webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# 1. 특정 지점까지 웹페이지 스크롤하는 법
#driver.execute_script("window.scrollTo(0, Y)") : Y에 어디까지 스크롤할지 지점을 입력해줌.
# Y 는 0~100, 200 과 같은 상수 값으로 입력하면 됨.
driver.excute_script("window.scrollTo(0, 100)")

# 2. 페이지의 마지막까지 (더이상 스크롤이 안되는 지점)까지 스크롤하려면 Y에 document.body.scrollHeight 를 입력하면 됨
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")

 

Headless Chrome 설정으로 크롬 브라우저 창을 띄우지 않고 크롤링 하는 방법

웹페이지 크롤링을 위해서 셀레니움_Selenium을 이용해 크롬브라우저를 통해 웹페이지를 호출하는 과정에서 크롬 브라우저 창이 띄게 되는데 이부분이 어지간히 거슬리는 부분이 아닐 수 없다. 웹브라우저가 작동하는 모습을 보면서 "내가 제로 코딩을 했구나." 하는 확인은 가능하지만  실제로 브라우저 창이 뜨고 모니터상으로 페이지가 움직이는 모습을 출력하는 건 인간이 이해하기 위한 방법이지 컴퓨터에게는 매우 무의미한 작업이다.

 

아래 코드를 사용하면 크롬 브라우저 창을 생성하지 않고 웹 크롤링을 진행 할 수 있다. 

#Headless Chrome
from selenium import webdriver

head_options = webdriver.ChromeOptions()
head_options.add_argument('headless')

#'options=head_options' 내용을 driver 변수 내용에 추가해준다.
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=head_options)

 

나와 같은 코알못을 위한 Python  Selenium 공부 내용을 정리해보았다. 작게나마 도움이 되었으면 좋겠고, 혹 도움이 되었다면 포스팅 내의 광고를 한 번 클릭해주는 센스를 발휘해 주길 바란다. 그럼 코알못 파이팅!!

댓글