inflearn logo
강의

講義

知識共有

【新改訂版】これが本当のクローリングだ - 基本編

선생님, 스크롤이 안됩니다. 도와주세요.

524

HLY

投稿した質問数 4

1

안녕하세요. 아래와 같이 코드를 짰는데 스크롤 하는 부분에서 더이상 진행이 안되는거 같습니다.
스크롤 하는 부분 소스를 봤는데 특이점은 못찾겠습니다.
선생님, 아래 소스 확인 요청 드립니다.
참고로 제 환경은 macOS 환경이고, Chrome 버전 100.0.4896.60 입니다.
물론 webdriver 도 동일 버전으로 맞춰서 하고 있습니다.
 
아래 소스 올려드립니다.
 


from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 웹브라우저 생성
browser = webdriver.Chrome('/Users/yuheewon/Downloads/chromedriver')

# 웹사이트 열기
browser.get('https://www.naver.com')
browser.implicitly_wait(3) # 로딩이 끝날 때까지 3초까지는 기다려줌

# 쇼핑 메뉴 클릭
browser.find_element_by_css_selector('a.nav.shop').click()
time.sleep(3)

# 검색창 클릭
search = browser.find_element_by_css_selector('input.co_srh_input._input')
search.click()

# 검색어 입력
search.send_keys('아이폰 13')
search.send_keys(Keys.ENTER)
time.sleep(3)

# 스크롤 전 높이
before_h = browser.execute_script("return windows.scrollY")

# 무한스크롤 기본 로직
while True :
time.sleep(2)
# 맨 아래로 스크롤을 내린다.
browser.find_element_by_css_selector("body").send_keys(Keys.END)

# 스크롤 사이 페이지 로딩 시간
time.sleep(1)

# 스크롤 후 높이
after_h = browser.execute_script("return windows.scrollY")

if after_h == before_h :
break

before_h = after_h

# 상품 정보 리스트
# 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
# price = item.find_element_by_css_selector(".price_num__2WUXn").text
# link = item.find_element_by_css_selector(".basicList_title__3P9Q7 > a").get_attribute("href")
# print(name, price, link)
 
이렇게 했을때 오류메세지는 아래와 같습니다.
 
/Users/yuheewon/Documents/PythonWorkspace/999_두번째_스터디_자료/03_네이버_쇼핑_크롤링/01_셀레니움_무한스크롤.py:8: DeprecationWarning: executable_path has been deprecated, please pass in a Service object browser = webdriver.Chrome('/Users/yuheewon/Downloads/chromedriver') /Users/yuheewon/Documents/PythonWorkspace/999_두번째_스터디_자료/03_네이버_쇼핑_크롤링/01_셀레니움_무한스크롤.py:15: DeprecationWarning: find_element_by_css_selector is deprecated. Please use find_element(by=By.CSS_SELECTOR, value=css_selector) instead browser.find_element_by_css_selector('a.nav.shop').click() /Users/yuheewon/Documents/PythonWorkspace/999_두번째_스터디_자료/03_네이버_쇼핑_크롤링/01_셀레니움_무한스크롤.py:19: DeprecationWarning: find_element_by_css_selector is deprecated. Please use find_element(by=By.CSS_SELECTOR, value=css_selector) instead search = browser.find_element_by_css_selector('input.co_srh_input._input') Traceback (most recent call last): File "/Users/yuheewon/Documents/PythonWorkspace/999_두번째_스터디_자료/03_네이버_쇼핑_크롤링/01_셀레니움_무한스크롤.py", line 28, in <module> before_h = browser.execute_script("return windows.scrollY") File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 879, in execute_script return self.execute(command, { File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 425, in execute self.error_handler.check_response(response) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.JavascriptException: Message: javascript error: windows is not defined (Session info: chrome=100.0.4896.60) Stacktrace: 0 chromedriver 0x000000010464a3d9 chromedriver + 5104601 1 chromedriver 0x00000001045dabf3 chromedriver + 4647923 2 chromedriver 0x00000001041cbb48 chromedriver + 392008 3 chromedriver 0x00000001041cea87 chromedriver + 404103 4 chromedriver 0x00000001041ce926 chromedriver + 403750 5 chromedriver 0x00000001041cf4ed chromedriver + 406765 6 chromedriver 0x0000000104231cb3 chromedriver + 810163 7 chromedriver 0x000000010421e6c2 chromedriver + 730818 8 chromedriver 0x0000000104231091 chromedriver + 807057 9 chromedriver 0x000000010421e5b3 chromedriver + 730547 10 chromedriver 0x00000001041f4139 chromedriver + 557369 11 chromedriver 0x00000001041f5165 chromedriver + 561509 12 chromedriver 0x000000010460939d chromedriver + 4838301 13 chromedriver 0x0000000104621cde chromedriver + 4938974 14 chromedriver 0x0000000104626b5e chromedriver + 4959070 15 chromedriver 0x000000010462294a chromedriver + 4942154 16 chromedriver 0x00000001045fe33c chromedriver + 4793148 17 chromedriver 0x000000010463c3b8 chromedriver + 5047224 18 chromedriver 0x000000010463c53f chromedriver + 5047615 19 chromedriver 0x0000000104651705 chromedriver + 5134085 20 libsystem_pthread.dylib 0x00007ff8017644e1 _pthread_start + 125 21 libsystem_pthread.dylib 0x00007ff80175ff6b thread_start + 15

python 웹-크롤링

回答 1

0

HLY

아... 선생님, 원인을 찾았습니다.

잠깐 낮잠을 자고 다시  봤더니 보이는게 있네요. ㅎ

결국 오타가 문제였네요.

return windows.scrollY 가 아니라

return window.scrollY 가 맞는거네요. ㅎ

귀찮게 해드려 죄송합니다.

 

 

0

startcoding

찾고 나서 댓글을 봤네요

오타 잘 찾으셨습니다 ^^

Live server 를 이용 해보고 싶은데 확장메뉴 설치가 막혀 있어요

0

62

2

'팀 단위 AI 업무 혁신' 자문 관련하여 문의드리고자 합니다. (연락처 요청)

0

38

1

import requests from bs4 import BeatifulSoup 이 단계에서 안 되네요

0

76

2

requests 관련 질문

1

136

2

설치 관련

0

131

2

vs code 결과출력이 안됩니다

0

143

1

크롤링 관련 질문입니다

0

210

2

word wrap 체크 후에도 콘솔 한줄로 출력되는현상

0

190

1

주피터에서 pip오류가 계속납니다

0

1084

3

강의 "requests, Beautifulsoup4 사용법 빠르게 알아보기"에서 질문이있습니다.

0

170

2

네이버쇼핑 검색창 넘어가기전 팝업창이 안사라져요

0

365

1

html주소를 다른 컴터에서도 접속하기

0

241

2

pandas 설치하는데 오류가 나서요

0

2705

1

실행오류

0

213

1

네이버쇼핑 무한스크롤 안되시는분들 모바일네이버로 실습해보세요

0

263

1

뉴스 페이지에 페이지 번호가 없는데 어떻게 가져오나요?

0

231

2

네이버 쇼핑에 팝업창이 뜨기 시작했어요 도와주세요 ㅠㅠ

0

720

3

셀레니움 실습 시 창이 자동 차단되면서 꺼집니다.

0

663

2

낮은 가격순을 클릭하는 문을 추가하고싶습니다.

0

303

2

pip는 내부 또는 외부명령 ,실행할 수 있는 프로그램

0

3387

2

이런오류는 어떤 오류인가요

0

658

1

창이 두개떠요/쇼핑검색도 안되요 ㅜ

0

333

2

약간 변태(?)같지만 해당 코드를 깔끔하게 함수로 리팩토링해보았습니다

0

338

2

과제 답안을 보지않고 스스로 구글링해서 만든 웹 크롤링 프로그램(10페이지 단위) 코드입니다.

0

757

2