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

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

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



{'상품명': '해외나이키 남녀공용 조약돌 스우시 풀 오버 후드티', '가격': '141,500\n원', '링크': '링크 없음', '총 리뷰수': '별점\n5.0', '이미지': 'https://shopping-phinf.pstatic.net/main_8490618/84906188708.jpg?type=f300'} 링크 없음으로 나와요!


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) # 웹사이트 열릴때 2초정도 기다렸다 여는 코드


# 스토어 창이 뜨는데, 그 창으로 이동

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_83jy9")

search.click()


search.send_keys("후드티") # 검색어를 넣어줌

search.send_keys(Keys.ENTER) # 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) # 위에 실행코드를 실행한뒤 1초동안 기다림

    after_h = driver.execute_script("return window.scrollY") # 이동하고나서 스크롤 위치

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

        break # 끝낸다.

    before_h = after_h # before_h -> after_h로 계속 위치를 바꿔준다.


# 상품 정보 div


items = driver.find_elements(By.CSS_SELECTOR, ".basicProductCard_basic_product_card__TdrHT.basicProductCard_view_type_grid2__vKr1n") # 들고올려는 상품을 선택


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].get_attribute('href') if links else "링크 없음"


   # 리뷰 수 찾기

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

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


   # 이미지 찾기

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

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


   product_info = {'상품명': name,'가격': price,'링크': link,'총 리뷰수': review_total,'이미지': image,}

   print(product_info)





driver.quit()






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