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()
반응형