[zero-base/] DS Part 4. EDA - 28일차 스터디 노트

손윤재·2024년 1월 10일

제로베이스 DS 22기

목록 보기
29/55
post-thumbnail

실습 도구 4️⃣

【유가(Oil Price) 분석】에 사용된 라이브러리


Selenium

  • 웹 브라우저를 원격 조작하는 도구이다.

  • 자동으로 URL을 열고 클릭 등을 가능하게 한다.

  • 스크롤, 문자 입력, 화면 캡처 등등 다양한 기능을 가지고 있다.


🔰 Webdriver 사용하기

  • 웹 브라우저를 컨트롤하기 위해서 Selenium Client를 사용한다.

  • Selenium Client는 WebDriver라는 공통 인터페이스(Common interface)와 각 브라우저 타입별(Chrome, IE, FireFox 등)로 하나씩 있는 Browser Driver로 구성되어 있다.

  • webdriver.Chrome()는 Selenium에서 Chrome 브라우저를 제어하기 위한 WebDriver를 생성하는 메서드이다.

  • 크롬 브라우저와 동일한 버전의 chromedriver를 다운로드 받는다.

  • WebDriver의 get()메서드를 사용하여 특정 URL의 웹 페이지를 연다.

    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    // Chrome WebDriver의 실행 파일 경로
    chrome_driver_path = "../chromedriver-win64/chromedriver.exe"

    // Chrome WebDriver 인스턴스 생성 및 실행 파일 경로 지정
    service = Service(executable_path=chrome_driver_path)
    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(service=service, options=options)

    // get() 함수로 접근하려는 웹 주소 지정
    driver.get("https://www.naver.com")

    // 창 닫기
    driver.quit()

🔰 브라우저 조작하기

  • WebDriver를 사용하여 다양한 동작을 수행할 수 있다.

  • 화면 최대화

	driver.maximize_window()
  • 화면 최소화
	driver.minimize_window()
  • 화면 크기
	driver.get_window_rect()
	driver.get_window_size()
    driver.set_window_size(1920, 1080)
  • 새로 고침
	driver.refresh()
  • 뒤로/앞으로 가기
	driver.back()
    driver.forward()
  • 새로운 탭 생성 - 자바스크립트 코드 사용
	driver.execute_script('window.open("https://www.naver.com");')
  • 탭 이동
	len(driver.window_handles)
	driver.switch_to.window(driver.window_handles[0])
  • 탭 닫기
	driver.close()
  • 스크롤 이동
	// 상단으로 이동
    driver.execute_script("window.scrollTo(0, 0)")
    
    // 하단으로 이동
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
  • 스크린샷
	driver.save_screenshot("./screenshot.png")

🔰 웹 html 요소 검색

  • 요소를 찾지 못하면 NoSuchElementException이 발생한다.

  • find_element() or find_elements()

	from selenium.webdriver.common.by import By
	driver.find_element(By.CSS_SELECTOR, "#content > div > ul > li:nth-child(1)")

  • 네이버 검색창에 검색어 입력
	keyword = driver.find_element(By.CSS_SELECTOR, "#query")
	keyword.send_keys("파이썬")
  • 찾기(돋보기) 버튼 클릭
	search_btn = driver.find_element(By.CSS_SELECTOR, "#sform > fieldset > button")
	search_btn.click()
profile
ISTP(정신승리), To Be Data Scientist

0개의 댓글