
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
3-4 강의 내용중에 네이버 스토어에서 후드티 검색하여 스크롤 내리기 작업이 끝이 나지 않습니다. 추천순이나 판매많은 순으로 100개 정도만 긁어 오는 방법이 있을까요?
작성한 코드 및 에러 메세지
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
# 크롬 드라이버 옵션 설정
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_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) # 스크롤 내리기
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()
오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.
Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!
