본문 바로가기
Python/크롤링, 스크래핑 (Selenium 등등)

[Python] Selenium을 이용한 스크린샷 찍는 방법, 스크린샷(파일)에서 원하는 요소의 위치나 크기에 맞게 크롭하는 방법, 이미지를 보여주는 방법 save_screenshot(), PIL

by dong_su 2024. 5. 28.

스크린샷 찍는 법

# 현재 html문서(DOM)의 총 높이와 너비로 브라우저 크기를 맞춤
height = driver.execute_script('return document.documentElement.scrollHeight')
width  = driver.execute_script('return document.documentElement.scrollWidth')
driver.set_window_size(width, height)  
    
time.sleep(2)

# 지정 경로에 스크린샷 파일을 저장(.png 등으로 끝나야 함)
driver.save_screenshot(경로)

스크린샷(파일)에서 원하는 요소의 위치나 크기에 맞게 크롭하는 법

# 관련 모듈 import
try:
    from PIL import Image
except ImportError :
    subprocess.run(['pip', 'install', 'Pillow'])
    from PIL import Image
    
# 특정 요소의 크기와 상대적인 위치 가져오기
element = driver.find_element(By.CSS_SELECTOR, 원하는 요소)
rect = driver.execute_script("return arguments[0].getBoundingClientRect();", element)

left, top, right, bottom = rect["left"], rect["top"], rect["right"], rect["bottom"]

img = Image.open(스크린샷(or 파일)경로)

cropped_img = img.crop((left, top, right, bottom))

# 크롭된 이미지를 저장
cropped_img.save(저장할경로(확장자까지))

이미지를 보여주기, 크기 변경하기

try:
    from PIL import Image
except ImportError :
    subprocess.run(['pip', 'install', 'Pillow'])
    from PIL import Image

img = Image.open(스크린샷(or 파일)경로)

# 보여주기, 크기 변경하기
image.show(), image.resize((300, 300))