inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

해결이 안되네요

669

코딩초보

작성한 질문수 6

1

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager # 크롬 드라이버 자동 업데이트
from selenium.webdriver.common.keys import Keys

import time
import pyautogui
import pyperclip

# 브라우져 꺼짐 방비
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

# 불필요한 에러 메시지 없애기
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"] )

service = Service(executable_path=ChromeDriverManager().install()) 
driver = webdriver.Chrome(service=service, options=chrome_options)

# 웹페이지 주소로 이동
driver.implicitly_wait(5) # 웹 페이지가 로딩될 때까지 5초 기다림
# driver.maximize_window() # 브라우저크기 최대화
driver.get("https://map.naver.com/v5")

search = driver.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(1)


# iframe 안으로 들어가기
driver.switch_to.frame("searchIframe")

# iframe 나올 때
# driver.switch_to_default_content()

# 무한스크롤 하기
## iframe 안쪽을 한번 클릭하기
driver.find_element(By.CSS_SELECTOR,"#_pcmap_list_scroll_container").click()

## 로딩된 데이터 갯수 확인
lis = driver.find_elements(By.CSS_SELECTOR,"li.Fh8nG.D5NxL")
before_len = len(lis)

while True :
    # 맨 아래로 스크롤을 내린다.
    driver.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END)
    # 페이지 로딩 시간을 준다
    time.sleep(1.5)
    # 스크롤 후 로딩된 데이터 개수 확인
    lis = driver.find_elements(By.CSS_SELECTOR,"li.Fh8nG.D5NxL")
    after_len = len(lis)
    
    # 로딩된 데이터 개수가 같다면 반복 멈춤
    if before_len == after_len:
        break
    before_len = after_len
    
# 데이터 수집
## lis에 모든 가계의 정보가 담겨있음
   
for li in lis:
    # 별점 있는 것만 선택
    stars = driver.find_elements(By.CSS_SELECTOR,"span.XGoTG.cN3MU> em")
   
    if len(stars)>0:
        # 가계이름
        store_name = li.find_element(By.CSS_SELECTOR,"span.place_bluelink.moQ_p").text 
        star_point = li.find_element(By.CSS_SELECTOR,"span.XGoTG.cN3MU> em")

위에서 store_name까지는 출력이 잘 되는데...star_point를 추가하고 출력하면 아래와 같은 에러가 발생합니다. 아무리 해봐도 해결이 안되네요..

python 웹-크롤링 웹-크롤링

답변 2

0

코딩초보

넵...해보겠습니다...잘되야할텐데..

0

스타트코딩

별점이 없는 경우도 있습니다.

이런 경우 if문이나 try - except로 예외 처리를 해주셔야 합니다.

셀레니움 환경설정 오류

0

39

2

네이버 로그인 관련

0

219

2

안녕하세요 셀레니움에 대해서 질문

0

80

1

크롤링 연습사이트 문의

0

93

2

선택자 질문

0

71

2

'특정 요소가 나타날 때까지 스크롤' 부분 에러

0

76

2

자동 로그인 질문

0

84

2

44강 제목, 링크

0

97

1

원하는 값이 없을 때

0

88

2

크롤링한 링크가 엑셀로 들어가면 작동이 안되요

0

224

2

셀레니움 PDF자료는 받을 수 있나요

0

99

2

글목록 추출하기

0

95

2

메일 자동화 로그인 중복방지문자해결 오류 및 명시적 대기 질문

0

86

2

강의 노트가 어디에 있는건가요?

0

79

2

강의 커리큘럼 질문

0

95

1

조건문 else 사용하지 않는 이유

0

73

2

셀레니움으로 접근할 수 없는 경우

0

95

2

웹페이지 변경

0

70

2

자바스크립트로 태그 선택 시 질문입니다.

1

62

2

수료증은 어떻게 받나요?

0

115

2

class명을 활용하여 선택자를 만들지 않는 경우..?

0

57

2

드라이버가 안 열려요

0

76

2

이거 해결방법 아시는 분?

0

121

2

네이버 지식인 크롤링..

0

199

2