Python

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

teamnova 2024. 2. 9. 12:00
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. 결과

결과 이미지입니다.

네이버 메인페이지 캡쳐