파이썬 Selenium (셀레니움) 스크롤(Scroll)
2021/01/01 - [개발자/파이썬] - 파이썬 (Selenium) 로딩까지 기다림 (feat. WebDriverWait)
저번 글에서는 로딩시간을 위한 Waits에 대해서 이야기해봤다.
이번 글에서는 스크롤에 대해서 적어보려고 한다.
스크롤 (Scroll)
보통 웹페이지에서 한번에 모든 정보를 제공하지 않는다.
스크롤을 해야 그 아래의 정보까지 파싱할 수 있는 경우가 있는데,
이때 우린 스크롤(Scroll) 동작을 통해 아래의 정보까지 가져올 수 있다.
※ 지정한 위치로 스크롤 내리기
# 지정한 위치로 스크롤 내리기
# 모니터(해상도)의 높이인 900 위치로 스크롤 내리기
browser.execute_script("window.scrollTo(0, 900)")
내 컴퓨터의 경우엔, 화면의 높이가 900이어서 그냥 900으로 넣어줬는데.
이건 각자 알아서 숫자를 바꿔주면서 조절해주면 될 것 같다.
이 코드를 통해 지정한 위치로 스크롤이 내려간다.
※ 화면의 가장 아래로 스크롤 내리기
# 화면 가장 아래로 스크롤 내리기
browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")
이 코드를 이용하면, 현재 화면에서 가장 아래로 스크롤된다.
※ 무한 스크롤
웹페이지의 끝이 나올 때까지, 무한 스크롤을 해야하는 경우가 있는데,
이떄 아래의 코드처럼, 현재의 높이를 가져와서 이용 할 수 있다.
prev_height = browser.execute_script("return document.body.scrollHeight")
이를 이용하여 무한 스크롤을 구현하는 예제는 아래와 같다.
(잘 이해가 안된다면 한번 직접 실행해보자)
import requests
from bs4 import BeautifulSoup
import time
headers = {
"User-Agent":"각자의 User-Agent를 넣어주자",
"Accept-Language":"ko-KR,ko"
}
from selenium import webdriver
browser = webdriver.Chrome("각자의 chromedriver 경로를 넣어주자")
browser.maximize_window()
url = "https://play.google.com/store/movies/top"
browser.get(url)
prev_height = browser.execute_script("return document.body.scrollHeight")
# 웹페이지 맨 아래까지 무한 스크롤
while True:
# 스크롤을 화면 가장 아래로 내린다
browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")
# 페이지 로딩 대기
time.sleep(2)
# 현재 문서 높이를 가져와서 저장
curr_height = browser.execute_script("return document.body.scrollHeight")
if(curr_height == prev_height):
break
else:
prev_height = browser.execute_script("return document.body.scrollHeight")
끝~~
'개발자 > 파이썬' 카테고리의 다른 글
파이썬 재무제표 스크래핑으로 내가 원하는 주식 찾기(feat. 네이버금융) (3) | 2021.01.04 |
---|---|
파이썬 셀레니움 (Selenium) headless (0) | 2021.01.03 |
파이썬 (Selenium) 로딩까지 기다림 (feat. WebDriverWait) (1) | 2021.01.01 |
파이썬 (Python) Selenium (기본, 네이버 로그인) (4) | 2020.12.31 |
파이썬 웹스크래핑(web scraping)_2 (0) | 2020.12.30 |