[Python/Exam Code]
Selenium에서 무한 스크롤링 기능을 구현하는 방법

2020. 6. 5. 04:34


웹사이트에서 음식점의 리스트를 표기하거나, 게시판 혹은 갤러리를 구성할때는 1페이지별로 n개의 항목을 보여주고 다음 페이지로 넘어가면 다시 n개의 새로운 항목을 보여주는것이 일반적인 구현 방식이다.

허나 일부 사이트에서는 이런식의 페이지 형태를 사용하지 않고 1페이지에 모든 항목을 표시하되 n개의 항목만을 보여주다 사용자가 페이지의 맨 아래부분으로 스크롤링하면 다시 새로운 n개의 항목을 덧붙여 표기하는 무한스크롤 방식을 사용하기도 한다.

이럴 때 selenium에서 사용할 수 있는 무한스크롤링 기능은 아래 코드와 같다.

while True:
    # 화면 최하단으로 스크롤 다운
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    # 페이지 로드를 기다림
    time.sleep(SCROLL_PAUSE_TIME)
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight-50);")
    time.sleep(SCROLL_PAUSE_TIME)

    # Calculate new scroll height and compare with last scroll height
    new_height = driver.execute_script("return document.body.scrollHeight")

    # 새로운 높이가 이전 높이와 변하지 않았을 경우 스크롤 종료
    if new_height == last_height:
        break
    
    # 스크롤 다운이 된다면 스크롤 다운이 된 후의 창 높이를 새로운 높이로 갱신
    last_height = new_height

위 코드는 무한 스크롤 기능의 일부분으로

driver = webdriver.Chrome("크롬드라이버 경로")

와같이 chrome driver를 driver로 선언했을 경우 동작한다. 만약 다른 이름으로 chrome driver를 선언했을 경우 무한스크롤링 코드의 driver.~~의 driver를 선언한 chrome driver로 변경해주면 된다.