
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
현재의 네이버 페이지와 강의 내용의 네이버 페이지 간의 차이가 꽤 있는거 같아 보이는데요.. 나름 따라서 코딩하면서 상품 정보들을 찾아 입력했고 오류는 없는데 크롤링한 상품 정보들이 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()보고 계신 화면 전체를 캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.
