인프런 커뮤니티 질문&답변

꾸해님의 프로필 이미지
꾸해

작성한 질문수

[2024 개정판] 이것이 진짜 크롤링이다 - 기본편

-

셀레니움4로 실습을 해보았는데 불필요한 코드가 포함되어있을까요??

작성

·

413

0

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.common.keys import Keys


# 브라우저 꺼짐 방지
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

# 불필요한 에러 메시지 없애기
chrome_options.add_experimental_option("excludeSwitches", ["enable-looging"])

# 브라우저 생성
service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

# 웹 사이트 열기
driver.maximize_window()
driver.get("https://www.naver.com")
driver.implicitly_wait(10) # 로딩이 끝날 때까지 10초는 기다림

# 쇼핑 메뉴 클릭
driver.find_element(By.CSS_SELECTOR, "#shortcutArea > ul > li:nth-child(4) > a").click()
time.sleep(2)

# 새창을 바라보게 만들기
new_window = driver.window_handles[1]
driver.switch_to.window(new_window)

# 검색창 클릭
search = driver.find_element(By.CSS_SELECTOR, "input._searchInput_search_text_3CUDs")
search.click()

# 검색어 입력
search.send_keys("아이폰 13")
search.send_keys(Keys.ENTER)

# 브라우저 종료 방지 - 입력 대기
input("로그인 성공 후 프로그램을 종료하려면 엔터 키를 눌러주세요.")

# 브라우저 종료
driver.quit()

 

안녕하세요.

이번 강의를 참고하여 셀레니움4로 코드를 적용해보았는데

불필요한 라이브러리나 코드을 추가한게 있을까요?..

답변 2

0

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

options = Options()  # Options 객체 생성
options.add_experimental_option("detach",True)  # 꺼짐 방지


service=Service(executable_path=ChromeDriverManager().install())
driver=webdriver.Chrome(service=service,options=options)

driver.get('https://naver.com')
driver.implicitly_wait(10)

driver.find_element(By.CSS_SELECTOR,'#shortcutArea > ul > li:nth-child(4) > a').click()
time.sleep(10)

# -----------------------------검색창 클릭 시도 1
# wait = WebDriverWait(driver, 30)
# search = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#gnb-gnb > div > div > button > span')))
# search.click()

# -----------------------------검색창 클릭 시도 2
# wait = WebDriverWait(driver, 30)
# search = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'span._combineHeader_expansion_search_inner_1VxB3')))
# search.click()


# -----------------------------검색창 클릭 시도 3
# search_script = "document.querySelector('#gnb-gnb > div > div > button > span').click();"
# driver.execute_script(search_script)

# -----------------------------검색창 클릭 시도 4
# search_element = driver.find_element(By.CSS_SELECTOR, '#gnb-gnb > div > div > button > span')
# ActionChains(driver).move_to_element(search_element).click().perform()


# -----------------------------검색창 클릭 시도 5
# wait = WebDriverWait(driver, 30)  # 최대 30초간 대기합니다.
# try:
#     search = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#gnb-gnb > div > div > button > span')))
# except TimeoutException:
#     print("요소를 찾을 수 없습니다.")

안녕하세요.

코딩 매우 초보이지만, 강의를 잘 따라 하고 있었는데, 검색어 클릭에서 막혔습니다.
주로 element를 못찾는다거나, timeout 에러가 발생합니다. 현재 네이버 쇼핑메뉴에 들어가면 팝업메뉴가 둥둥 떠있어서 그런것 같기도 합니다. 수동으로 검색어 클릭하면 two touch 해야 클릭 포커스가 잡힙니다. 검색어 클릭하기 위해서 코딩 초보가 자세한 뜻도 모르고 이것 저것 시도한 소스파일입니다.
검색어 클릭을 어떻게 하면 할수 있는지 도움 부탁드립니다.

 

0

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

깔끔하게 잘 작성하셨는데요? ㅎㅎ

꾸해님의 프로필 이미지
꾸해
질문자

감사합니다~!!

꾸해님의 프로필 이미지
꾸해

작성한 질문수

질문하기