본문 바로가기
Python

[Python] Selenium으로 웹페이지 전체 캡처하기

by teamnova 2024. 2. 9.
728x90

이번 시간에는 Python으로 Selenium 라이브러리를 사용해서 웹페이지 전체를 캡쳐한뒤 로컬에 저장하는 예제를 진행하겠습니다.

 

1. Selenium 설치

pip install selenium

 

 

2. 소스 코드

이 예제에서는 네이버 메인페이지를 캡쳐했습니다.

import time  # time 모듈을 임포트하여 sleep 기능을 사용.
from selenium import webdriver  # Selenium 패키지에서 webdriver 모듈을 임포트.
from selenium.webdriver.chrome.options import Options  # Chrome 옵션을 설정하기 위해 Options 모듈을 임포트.

# 전체 화면 캡처 기능을 정의하는 함수
def full_screenshot(driver, url, output_path):
    driver.get(url)  # 지정된 URL을 웹드라이버에서 열기.
    time.sleep(1)  # 페이지가 로드되기를 기다리기 위해 1초 동안 대기.

    # 자바스크립트를 실행하여 웹페이지의 총 높이를 가져오기.
    total_height = driver.execute_script("return document.body.parentNode.scrollHeight")

    # 브라우저 창을 페이지 하단으로 스크롤 하기.
    driver.execute_script("window.scrollTo(0, document.body.parentNode.scrollHeight);")

    time.sleep(1)  # 1초 동안 대기.

    # 창의 크기를 설정하여 전체 웹페이지를 캡처 (너비: 1920 픽셀, 높이: total_height 픽셀)
    driver.set_window_size("1920", total_height)

    time.sleep(1)  # 1초 동안 대기.
    driver.save_screenshot(output_path)  # 스크린샷을 지정된 출력 경로에 저장.

# 헤드리스 모드를 위한 Chrome 옵션 설정.
chrome_options = Options()
chrome_options.add_argument('--headless')

# 지정된 옵션으로 Chrome 웹드라이버 인스턴스를 생성.
driver = webdriver.Chrome(options=chrome_options)

# 스크린샷을 찍을 웹페이지의 URL 및 출력 경로를 설정.
url = "https://www.naver.com"
output_path = "screenshot1.png"

# full_screenshot 함수를 호출하여 전체 웹페이지를 캡처하고 스크린샷 저장.
full_screenshot(driver, url, output_path)

# 웹드라이버를 닫기.
driver.quit()

 

 

3. 결과

결과 이미지입니다.

네이버 메인페이지 캡쳐