커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
3-4 네이버쇼핑 크롤링
칼퇴를 부르는 파이썬 업무 자동화 v0
3주차
북마크
송*한
댓글
4
추천
0
조회수
20
조회수
20
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


네이버 화면이 밑으로 잘 내려가지만,

터미널에서는 가격, 링크, 리뷰 수 등의 내용이 추출이 안됩니다.


어떤게 문제일까요?








스파르타 즉문즉답

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.chrome.options import Options

import time


from openpyxl import load_workbook

from openpyxl.drawing.image import Image

import requests

from io import BytesIO


chrome_options = Options()

chrome_options.add_experimental_option("detach", True)

chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])

driver = webdriver.Chrome(options=chrome_options)


# 웹 사이트 열기

driver.get('https://www.naver.com')

time.sleep(1)


# 쇼핑 메뉴 클릭하기

driver.find_element(By.CSS_SELECTOR, ".service_icon.type_shopping").click()

time.sleep(1)


# # 새창을 바라보게 만들기

new_window = driver.window_handles[1]

driver.switch_to.window(new_window)


# 화면 최대화 해야지 검색창이 보임

driver.maximize_window()


# 검색창 클릭

search = driver.find_element(

  By.CSS_SELECTOR, "input._searchInput_search_text_3CUDs")

search.click()


# 검색어 입력

search.send_keys("후드티")

search.send_keys(Keys.ENTER)


# 스크롤 전 높이

before_h = driver.execute_script("return window.scrollY")


# 화면 대기 후, 닫기 버튼을 눌러 진행하게 만들기

time.sleep(3)

popup_modal = driver.find_element(

  By.CSS_SELECTOR, "button._buttonArea_close_34bcm")

popup_modal.click()


# 무한 스크롤

while True:

  # 맨 아래로 스크롤 내린다.

  driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)


  # 스크롤 사이 페이지 로딩 시간

  time.sleep(1)


  # 스크롤 후 높이

  after_h = driver.execute_script("return window.scrollY")

  if after_h == before_h:

    break

  before_h = after_h



# 상품 정보 div

items = driver.find_elements(By.CSS_SELECTOR, ".product_item__MDtDF")


for item in items:

  # 상품명 찾기

  names = item.find_elements(By.CSS_SELECTOR, ".product_title__Mmw2K")

  name = names[0].text if names else "이름 없음"


  # 가격 찾기

  prices = item.find_elements(By.CSS_SELECTOR, ".price_num__S2p_v")

  price = prices[0].text if prices else "가격 없음"


  # 링크 찾기

  links = item.find_elements(By.CSS_SELECTOR, ".product_title__Mmw2K > a")

  link = links[0].get_attribute('href') if links else "링크 없음"


  # 리뷰 수 찾기

  review_totals = item.find_elements(By.CSS_SELECTOR, ".product_num__fafe5")

  review_total = review_totals[0].text if review_totals else "리뷰 없음"


  # 이미지 찾기

  images = item.find_elements(By.CSS_SELECTOR, '.thumbnail_thumb__Bxb6Z > img')

  image = images[0].get_attribute('src') if images else "이미지 없음"


  product_info = {

    '상품명': name,

    '가격': price,

    '링크': link,

    '총 리뷰 수': review_total,

    '이미지': image

  }


  print(product_info)


driver.quit()


코드는 완성 코드를 써도 똑같습니다

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴