본문 바로가기
파이썬/파이썬 셀레니움, Request

시간 설정으로 유튜브 셀레니움 스크롤 적당히 내리기

by SeH_ 2022. 11. 6.
반응형

유튜브는 유튜브 동영상을 내려도 내려도 계속 새로운 동영상이 나옵니다.

영원히 끝나지 않는 스크롤이 진행되지요.

하지만, 어쨌든 스크롤을 끝내고 크롤링을 진행해야 합니다. 

따라서 적당히 내리는 방법을 알아야 합니다.

 

저는, 시간을 주고, 적당히 내리는 방법을 통해 코드를 구성하였습니다.

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium import webdriver
import datetime

위 모듈을 설치 및 import 해주세요. datetime이 핵심입니다. 

 

 

seconds = time에서 times 부분에 원하는 시간(초 단위)을 입력하시면 됩니다. 

 

start = datetime.datetime.now()
end = start + datetime.timedelta(seconds = times)
while True:
    driver.find_element(by=By.CSS_SELECTOR, value="body").send_keys(Keys.END) 
    time.sleep(1)
    if datetime.datetime.now() > end:
        break


html = driver.page_source

time.sleep(2) #스크롤 하는 동안의 로딩시간

 

이 코드가 잘 되지 않는 분들은 scrollTo 함수를 통해 스크롤을 내릴 수 있습니다. 

start = datetime.datetime.now()
end = start + datetime.timedelta(seconds = 30)
while True:
    driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
    time.sleep(1)
    if datetime.datetime.now() > end:
        break

댓글