콘솔워크

[selenium] 자료가 바닥나기 전까지 늘어나는 화면에서 스크롤을 계속 내리는 함수 본문

프로그래밍/python

[selenium] 자료가 바닥나기 전까지 늘어나는 화면에서 스크롤을 계속 내리는 함수

이휘재123 2022. 6. 24. 15:12
반응형

selenium으로 크롤링을 하다보면 간혹 스크롤을 내릴때마다 자료가 추가되는 사이트가 있는데, 그 때 유용하게 쓰일 스크롤을 내리는 함수이다.

def repeat_scroll(self, driver):
    #스크롤 내리기 전 위치
    scroll_location = driver.execute_script("return document.body.scrollHeight")

    while True:
        #현재 스크롤의 가장 아래로 내림
        driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

        #전체 스크롤이 늘어날 때까지 대기
        time.sleep(2)

        #늘어난 스크롤 높이
        scroll_height = driver.execute_script("return document.body.scrollHeight")

        #늘어난 스크롤 위치와 이동 전 위치 같으면(더 이상 스크롤이 늘어나지 않으면) 종료
        if scroll_location == scroll_height:
            break

        #같지 않으면 스크롤 위치 값을 수정하여 같아질 때까지 반복
        else:
            #스크롤 위치값을 수정
            scroll_location = driver.execute_script("return document.body.scrollHeight")

 

반응형