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. 결과
결과 이미지입니다.
'Python' 카테고리의 다른 글
[Python] FastAPI에서 CORS 정책 적용하기 (0) | 2024.02.15 |
---|---|
[Python] 죽지않는 웹소켓 만들기 (0) | 2024.02.14 |
[Python] 실시간 비트코인 거래 데이터를 MariaDB에 저장하기 (0) | 2024.02.05 |
[Python] 업비트 API로 실시간 비트코인 거래 데이터 수신하기 (0) | 2024.01.27 |
[Python] Pillow 라이브러리로 이미지 처리하기 (2) | 2023.12.03 |