크립) 셀레늄

셀렌


  • 원래는 웹 애플리케이션용 테스트 도구였습니다. 그러나 크롤링에 많이 사용됩니다.

  • 페이지 로딩 및 태그 선택
from selenium import webdriver

# 브라우저 생성
browser = webdriver.Chrome("{chromedriver파일경로}")

# 네이버 열기
browser.get("https://www.naver.com")
browser.implicitly_wait(10) # 웹사이트 로딩 10초 기다려주기 (10초 안에 로딩되면 바로 넘어감)

# 쇼핑 메뉴 열기
browser.find_element(By.CSS_SELECTOR, value="a.nav.shop").click()

  • 클릭하고 텍스트 입력
from selenium.webdriver.common.keys import Keys

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

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

  • 복사 및 붙여넣기(너무 빠른 바이패스 입력)
import pyautogui
import pyperclip

# 입력 하고싶은 component 선택과정 생략
...


# 자꾸 복붙이 아닌 v가 입력됨. 버그인듯.. 
# 이렇게 미리 커맨드 한번 누르면 잘 됨.
pyautogui.hotkey("command") 

# 복붙
pyperclip.copy("아이패드")
time.sleep(1)
pyautogui.hotkey("command", "v")
time.sleep(1)

  • 무한 스크롤(아래로 이동하여 이 페이지의 모든 제품 로드)
# 스크롤 전 높이
before_h = browser.execute_script("return window.scrollY")

while True:
    # 맨 아래로 스크롤
    browser.find_element(By.CSS_SELECTOR, value="body").send_keys(Keys.END)
    time.sleep(1)

    # 스크롤 후 높이
    after_h = browser.execute_script("return window.scrollY")

    # 더 스크롤이 생성되지 않는다면, 멈추기
    if after_h == before_h: break
    
    before_h = after_h

  • 여러 페이지
    • 페이지를 이동하면서 URL 매개변수가 변경되는 것을 보고 어떤 매개변수가 페이지를 의미하는지 확인합니다.
    • 루프 중에 URL 매개변수를 변경할 수 있습니다.