인프런 커뮤니티 질문&답변
스크롤이 끝까지 내려가지 않습니다!
작성
·
4.5K
답변 3
1
# browser.find_element_by_css_selector('body').send_keys(Keys.END)
browser.execute_script('window.scrollTo(0, document.body.scrollHeight);')
코드에 이상은 없는데, body tag 인식을 못한다는 오류가 뜨네요. Keys.END 대체 메소드 올립니다.
0
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
browser = webdriver.Chrome(options=options)
url = 'https://www.naver.com/'
browser.get(url) # 페이지 이동
browser.maximize_window() # 창 최대화
browser.implicitly_wait(10) # 로딩이 끝날때까지 10초간 대기(없어도됨)
element = browser.find_element(
By.CLASS_NAME, 'nav.shop').click() # 쇼핑몰 버튼을 찾아서 클릭
time.sleep(2)
search = browser.find_element(By.CLASS_NAME, '_searchInput_search_input_QXUFf')
search.click() # 검색창으로 이동
search.send_keys('아이폰13') # 검색어 입력
search.send_keys(Keys.ENTER) # 검색버튼 클릭
# 스크롤 높이 가져옴
after_h = browser.execute_script("return document.body.scrollHeight")
while True:
# 끝까지 스크롤 내리기
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 대기
time.sleep(1)
# 스크롤 내린 후 스크롤 높이 다시 가져옴
before_h = browser.execute_script("return document.body.scrollHeight")
if before_h == after_h:
break
after_h = before_h
0
스타트코딩
지식공유자
안녕하세요.
코딩을 가장 쉽게 알려주는 크리에이터, 스타트코딩입니다.
우선 코드에서 오류가 있을 수 있으니 제가 드리는 코드와 비교해 보세요 :)
[02_셀레니움_무한스크롤.py]
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# 브라우저 생성
browser = webdriver.Chrome('C:/chromedriver.exe')
# mac 의 경우 /User/startcoding/Documents/chromedriver
# 웹사이트 열기
browser.get('https://www.naver.com')
browser.implicitly_wait(10) # 로딩이 끝날 때까지 10초까지는 기다려줌
# 쇼핑 메뉴 클릭
browser.find_element_by_css_selector('a.nav.shop').click()
time.sleep(2)
# 검색창 클릭
search = browser.find_element_by_css_selector('input.co_srh_input._input')
search.click()
# 검색어 입력
search.send_keys('아이폰 13')
search.send_keys(Keys.ENTER)
# 스크롤 전 높이
before_h = browser.execute_script("return window.scrollY")
# 무한 스크롤
while True:
# 맨 아래로 스크롤을 내린다.
browser.find_element_by_css_selector("body").send_keys(Keys.END)
# 스크롤 사이 페이지 로딩 시간
time.sleep(1)
# 스크롤 후 높이
after_h = browser.execute_script("return window.scrollY")
if after_h == before_h:
break
before_h = after_h
# 상품 정보 div
items = browser.find_elements_by_css_selector(".basicList_info_area__17Xyo")
for item in items:
name = item.find_element_by_css_selector(".basicList_title__3P9Q7").text
try:
price = item.find_element_by_css_selector(".price_num__2WUXn").text
except:
price = "판매중단"
link = item.find_element_by_css_selector(".basicList_title__3P9Q7 > a").get_attribute('href')
print(name, price, link)
ljyoung414
질문자
답변 감사합니다!
코드는 동일합니다. 스크롤이 1회만 실행되고 지속적인 스크롤이 되지 않는 것으로 보입니다.
현재 다른 method를 구글링하여 해결은 했습니다!






body태그를 찾기 전에 time.sleep(2) 정도 줘서
로딩하는 시간을 줘보시기 바랍니다 ^^