python/기타

python 으로 웹페이지 전체 캡춰(스크롤 캡춰) 하기

zoomer75 2021. 11. 25. 17:48

웹페이지를 캡춰할 때 페이지가 길 경우 하단까지 캡춰를 해야할 경우가 있습니다.

 

갯수가 많을 경우 일반 캡춰 프로그램으로 일일이 캡춰하기가 어려워서 프로그램으로 캡춰 하는 방식을 공유드립니다.

 

일단 python , selenium 을 이용하셔서 자동으로 캡춰하실 수 있습니다.

 

자세한 소스 보다는 개념위주로 설명드립니다.

 

기본 개념은 사이트를 열때 selenium headless 모드로 사이트를 연 다음 자바스크립트로 웹페이지의 높이를 계산한 다음 창 사이즈를 높이 만큼 조정합니다. 그런다음 캡춰를 하게 되면 전체 사이즈로 캡춰가 가능해지는 방법입니다.

 

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

driver = webdriver.Chrome(options=webdriverOptions)
driver.get('https://www.naver.com/')
# 기본 사이즈를 설정합니다.
self.driver.set_window_size(1920,500)

totalWidth = self.driver.execute_script("return document.body.offsetWidth")
totalHeight = self.driver.execute_script('return document.body.parentNode.scrollHeight')
# 화면의 실제 사이즈로 변경합니다.
driver.set_window_size(totalWidth, totalHeight)

# 화면캡춰
el = self.driver.find_element(By.TAG_NAME, 'body')
el.screenshot('main.png')

driver.quit()
반응형