⌨️ 셀레니움이란?
웹 애플리케이션을 위한 테스팅 프레임워크로 시작되었지만, 웹 페이지를 자동화하거나 웹 크롤링을 위해 널리 사용되고 있따. 이를 사용하면, 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 을 사용하여 필요한 데이터를 가져오는 것이 좋다. 셀레니움은 추가적인 지원을 사용하고, 크롤링 속도가 느릴 수 있기 때문에 필요한 경우에만 사용하는 것이 효율적이다 .'2023 공부한것들' 카테고리의 다른 글
6. selenium 맛보기 - 지니 뮤직 순위 스크래핑 (크롬 드라이버 버전 오류) (0) | 2023.08.08 |
---|---|
5. 웹 크롤링과 스크래핑 로드맵 (0) | 2023.08.07 |
3. 기초적인 웹 검색 기술과 검색엔진의 사용법 (0) | 2023.08.07 |
2. OSINT의 기초 개념을 알아보자 (0) | 2023.08.07 |
1. OSINT를 공부해보자 (로드맵) (0) | 2023.08.07 |