인프런 커뮤니티 질문&답변
네이버 지도 맛집 자료 수집하기 오류
작성
·
1.9K
1
안녕하세요 네이버 맛집 Data 수집 크롤링 오류 문의 드립니다.
크롬이 실행되고, 이후 마우스 스크롤까지는 잘 되지만 이후 부터는 지연이되다가
나중에는 오류를 출력하고 있는데... 한번 확인부탁드립니다.ㅠ 정말 잘 진도 나가다 오류로 여려 구글링 해도 잘 안되네요!
■ 실행코드
■ 오류코드
크롬 버전과 드라이버 버전도 맞춰서 하는데... 계속 스크롤 이후 멈추고 아래와 같은 오류가 생깁니다ㅠ
[2612:14204:0411/103851.435:ERROR:util.cc(126)] Can't create base directory: C:\Program Files\Google\GoogleUpdater
[18704:15884:0411/103951.246:ERROR:gpu_init.cc(446)] Passthrough is not supported, GL is disabled, ANGLE is
Traceback (most recent call last):
File "c:\startcoding\네이버지도크롤링\03.데이터수집.py", line 41, in <module>
lis = browser.find_elements_by_css_selector("li._1EKsQ")
File "C:\Users\hellonature\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 832, in find_elements_by_css_selector
return self.find_elements(by=By.CSS_SELECTOR, value=css_selector)
File "C:\Users\hellonature\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 1283, in
find_elements
return self.execute(Command.FIND_ELEMENTS, {
File "C:\Users\hellonature\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 425, in execute
self.error_handler.check_response(response)
File "C:\Users\hellonature\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
(Session info: chrome=100.0.4896.75)
Stacktrace:
Backtrace:
Ordinal0 [0x01058BD3+2395091]
Ordinal0 [0x00FEACA1+1944737]
Ordinal0 [0x00EDCED0+839376]
Ordinal0 [0x00ED1052+790610]
Ordinal0 [0x00ED1888+792712]
Ordinal0 [0x00ED3122+799010]
Ordinal0 [0x00ECCA79+772729]
Ordinal0 [0x00EDE380+844672]
Ordinal0 [0x00F34542+1197378]
Ordinal0 [0x00F249D6+1133014]
Ordinal0 [0x00EFEF76+978806]
Ordinal0 [0x00EFFE86+982662]
GetHandleVerifier [0x0120C912+1719138]
GetHandleVerifier [0x012BB2CD+2434333]
GetHandleVerifier [0x010F4001+569937]
GetHandleVerifier [0x010F3066+565942]
Ordinal0 [0x00FF265B+1975899]
Ordinal0 [0x00FF72A8+1995432]
Ordinal0 [0x00FF7395+1995669]
Ordinal0 [0x010002F1+2032369]
BaseThreadInitThunk [0x7572FA29+25]
RtlGetAppContainerNamedObjectPath [0x775C7A9E+286]
RtlGetAppContainerNamedObjectPath [0x775C7A6E+238]
답변 2
0
제가 클래스명 수정했을 때는 잘 되는데,
제 코드로 돌려 보시겠어요??
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Chrome("c:/chromedriver.exe")
browser.get("https://map.naver.com/v5/")
browser.implicitly_wait(10)
browser.maximize_window()
# 검색창 입력
search = browser.find_element_by_css_selector("input.input_search")
search.click()
time.sleep(1)
search.send_keys("강남역 맛집")
time.sleep(1)
search.send_keys(Keys.ENTER)
time.sleep(2)
# iframe 안으로 들어가기
browser.switch_to.frame("searchIframe")
# browser.switch_to_default_content() iframe 밖으로 나오기
# iframe 안쪽을 한번 클릭하기
browser.find_element_by_css_selector("#_pcmap_list_scroll_container").click()
# 로딩된 데이터 개수 확인
lis = browser.find_elements_by_css_selector("li._1EKsQ")
before_len = len(lis)
while True:
# 맨 아래로 스크롤 내린다.
browser.find_element_by_css_selector("body").send_keys(Keys.END)
# 스크롤 사이 페이지 로딩 시간
time.sleep(1.5)
# 스크롤 후 로딩된 데이터 개수 확인
lis = browser.find_elements_by_css_selector("li._1EKsQ")
after_len = len(lis)
# 로딩된 데이터 개수가 같다면 반복 멈춤
if before_len == after_len:
break
before_len = after_len
# 데이터 기다리는 시간을 0으로 만들어 줘요. (데이터가 없더라도 빠르게 넘어감)
browser.implicitly_wait(0)
for li in lis:
# 별점이 있는 것만
if len(li.find_elements_by_css_selector("span._2FqTn._1mRAM > em")) > 0:
# 가게명
name = li.find_element_by_css_selector("span.OXiLu").text
# 별점
star = li.find_element_by_css_selector("span._2FqTn._1mRAM > em").text
# 영업 시간이 있다면
if len(li.find_elements_by_css_selector("span._2FqTn._4DbfT")) > 0:
# 방문자 리뷰수
try:
visit_review = li.find_element_by_css_selector("span._2FqTn:nth-child(3)").text
except:
visit_review = "0"
# 블로그 리뷰수
try:
blog_review = li.find_element_by_css_selector("span._2FqTn:nth-child(4)").text
except:
blog_review = "0"
# 영업 시간이 없다면
else:
# 방문자 리뷰수
try:
visit_review = li.find_element_by_css_selector("span._2FqTn:nth-child(2)").text
except:
visit_review = "0"
# 블로그 리뷰수
try:
blog_review = li.find_element_by_css_selector("span._2FqTn:nth-child(3)").text
except:
blog_review = "0"
print(name, star, visit_review, blog_review)
0
음.. 제가 이건 조금 더 깊게 봐야 겠네요.
지금 책 집필 마감일이라.. 시간이 부족합니다.
조금만 기다려 주세요.
우선, 셀레니움 4버전으로 맞춰서 한번 코드를 변경해 보시겠어요?
제가 영상 올려 놨습니다.





