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

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

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


현재의 네이버 페이지와 강의 내용의 네이버 페이지 간의 차이가 꽤 있는거 같아 보이는데요.. 나름 따라서 코딩하면서 상품 정보들을 찾아 입력했고 오류는 없는데 크롤링한 상품 정보들이 VS의 터미널에서 출력되지 않아 수정이 필요한 부분이 어디인지 몰라 문의드립니다..



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(2)

driver.find_element(By.CSS_SELECTOR, ".service_icon.type_shopping").click #쇼핑 탭 클릭

time.sleep(2)

# 쇼핑 창이 뜨는데 그 창으로 이동

new_window = driver.window_handles[1]

driver.switch_to.window(new_window)

driver.naximize_window()


search = driver.find_element(By.CSS_SELECTOR,"input._searchInput_search_text_83jy9")

search.click()


search.send_keys("후드티")

search.send_keys(Keys.ENTER)


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

while True:

  driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END) # 스크롤 내리는 END 키

  time.sleep(1)

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

  if after_h == before_h: # 만약 옮기기 전과 후 스크롤 위치 동일하면(끝까지 다 내렸다면)

    break

  before_h = after_h


items = driver.find_elements(By.CSS_SELECTOR, "compositeCardContainer_composite_card_container__jr8cb composite_card_container")


for item in items:

  # 상품명

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

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


  # 가격 찾기

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

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


  # 링크 찾기

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

  link = links[0].text if links else "이름 없음"


  # 리뷰 수 찾기

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

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


  # 이미지 찾기

  images = item.find_elements(By.CSS_SELECTOR, "productCardThumbnail_thumbnail__KzO1N > img")

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


  product_info = {

    '상품명' : name,

    '가격' : price,

    '링크' : link,

    '총 리뷰수' : review_total,

    '이미지' : image,

  }

  print(product_info)


driver.quit()보고 계신 화면 전체를 캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.




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