728x90
728x90

⌨️ 셀레니움이란?

웹 애플리케이션을 위한 테스팅 프레임워크로 시작되었지만, 웹 페이지를 자동화하거나 웹 크롤링을 위해 널리 사용되고 있따. 이를 사용하면, JS로 구성된 동적 웹 페이지를 크롤링 가능하다

🚀 1. 설치

pip install selenium 

🚀 2. 웹 드라이버 설치

셀레니움은 브라우저를 제어하기 위한 웹 드라이버가 필요하다.

예를 들어 chrome을 사용할 경우 chromeDriver를 설치해야 한다.

🚀 3. 기본 사용법

from selenium import webdriver

# 웹드라이버 초기화 (이 경우는 Chrome을 사용)
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

# 웹 페이지 접근
driver.get('https://www.example.com')

# 웹 요소 찾기 및 조작
element = driver.find_element_by_id('element_id')
element.send_keys('some text')
element.click()

# 페이지의 내용 가져오기
page_source = driver.page_source

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

🚀 4. 기다리기 (Implicit. & Explicit Waits)

동적 웹페이지는 요소가 로드되는 데 시간이 걸릴 수 있으므로 원하는 웹 요소가 충분히 로드될 떄까지 기다려야 한다 .

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Explicit Wait 예제
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'element_id'))
)

🚀  5. 동작(Actions)

복잡한 사용자 상호작용, 예를 들면 드래그 앤 드롭, 마우스 오버 등을 시뮬레이트 할 수 있다.


Selenium의 크롤링 속도는 ‘requests’나 ‘BeautifulSoup’ 와 같은 도구보다 느릴 수 있다. 따라서 필요한 경우에만 사용하는 것이 좋다. 이를 사용하면 매우 강력하고 유연한 웹 크롤링 및 자동화가 가능하지만, 동시에 많은 지원을 사용할 수 있으므로 효율적인 크롤링 전략을 구상하는 것이 중요하다 .

🤷🏻‍♂️Selenium, 왜 써야 하는가?

🌐 동적 웹 페이지 크롤링

많은 웹사이트들이 AJAX나 JAVASCRIPT를 사용하여 동적으로 데이터를 로드한다.

‘requests’로 페이지를 가져올 떄, 초기 Html만 가져올 수 있으며, JAVASCIRPT로 생성된 동적 콘텐츠는 포함되지 않을 수 있따. ‘selenium’은 실제 브라우저를 제어하므로 JAAVASCRIPT를 실행하여 페이지의 완전한 내용을 가져올 수 있다

🌐 사용자 상호작용 시뮬레이션

어떤 웹 페이지는 특정 버튼을 클릭하거나, 폼을 채우고 제출하거나, 스크롤 다운하는 등의 사용자 상호작용을 필요로 할 떄가 있따. ‘Selenium’은 이러한 상호작용을 자동화하고 시뮬레이션 할 수 있다.

🌐 웹 페이지의 상태 변경 감지

로그인 상태, 쿠키, 세션 등의 웹 페이지 상태를 유지하고 변경하려면 이를 사용하는 것이 더 쉬울 수 있다.

🌐 페이지 Redirections

몇몇 웹사이트는 자동 리다이렉션을 사용할 수 있으며, Selenium은 이러한 리다이렉션을 자연스럽게 처리할 수 있다.

🌐 CAPTCHA 및 보안

일부 웹사이트는 자동화된 엑세스를 차단하기 위해 captcha나 다른 보안 조치를 사용할 수 있다. 이런 경우, 자동화된 도구로 captcha를 우회하는 것은 권장되지 않지만, ‘selenium’을 사용하여 수동으로 capcha를 입력하거나 다른 보안 조치를 처리할 수 있다 .

🌐 브라우저 특정 작업

셀레니움은 여러 브라우저에서 테스트를 수행하거나. 브라우저의 특정 기능 (예: 확장 프로그램 사용, 개발자 도구 사용 등)을 활용하는 작업에 유용합니다.

💡 그렇다고 해서 모든 웹 크롤링 작업에 셀레니움을 사용해야 하는 것은 아니다. 가능하다면 먼저 Requests와 BeautifulSoup 을 사용하여 필요한 데이터를 가져오는 것이 좋다. 셀레니움은 추가적인 지원을 사용하고, 크롤링 속도가 느릴 수 있기 때문에 필요한 경우에만 사용하는 것이 효율적이다 .
 
728x90
300x250

+ Recent posts