커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
여러가지 시도를 했으나 검색이 안됩니다.
[왕초보] 칼퇴를 부르는 파이썬 업무 자동화
3주차
북마크
엄*용
댓글
1
추천
0
조회수
10
조회수
10
답변 완료

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

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



네이버 쇼핑 창까지는 열리는데, 거기서 "후드티"라고 검색이 안됩니다.



스파르타 즉문즉답





from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

import time


# Chrome 옵션 설정

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')


try:

# 쇼핑 탭 클릭

WebDriverWait(driver, 10).until(

EC.element_to_be_clickable(

(By.CSS_SELECTOR, '#shortcutArea > ul > li:nth-child(4) > a > span.service_icon.type_shopping')

)

).click()


# 창 전환 처리

time.sleep(2) # 클릭 후 약간의 대기

windows = driver.window_handles # 모든 창 핸들 확인


if len(windows) > 1: # 새 창이 열렸다면

driver.switch_to.window(windows[-1]) # 새 창으로 전환

driver.maximize_window()

else:

print("새 창이 열리지 않았습니다. 현재 창에서 작업을 계속합니다.")


# 검색 버튼 클릭

WebDriverWait(driver, 10).until(

EC.element_to_be_clickable(

(By.CSS_SELECTOR, "._shoppingHomeSearch_button_gXyNO")

)

).click()


# 검색어 입력 후 엔터

search = driver.find_element(By.CSS_SELECTOR, "input[placeholder='검색어를 입력해 주세요.']") # 검색창을 선택

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(0.5) # 스크롤 후 대기 시간 최적화

after_h = driver.execute_script("return window.scrollY") # 이동 후 스크롤 위치

if after_h == before_h: # 만약 이동 전과 후의 스크롤 위치가 같다면 (끝까지 다 내렸다면)

break

before_h = after_h


except Exception as e:

print("오류 발생:", e)


finally:

driver.quit()


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