Python 고급

Python 브라우저 자동화를 위한 Selenium 사용

PyExplorer 2025. 1. 10. 08:39
728x90

Python 브라우저 자동화를 위한 Selenium 사용

안녕하세요! 오늘은 Python 고급 주제 중 하나인 Selenium을 활용한 브라우저 자동화에 대해 다뤄보겠습니다. Selenium은 웹 애플리케이션 테스트 및 브라우저 자동화를 위해 널리 사용되는 강력한 도구입니다. 이 글에서는 Selenium의 기본 개념, 설치 방법, 주요 기능, 그리고 간단한 예제를 통해 Selenium 사용법을 익혀보겠습니다.

Selenium이란?

Selenium은 웹 브라우저를 프로그래밍적으로 제어할 수 있는 오픈 소스 도구입니다. 원래 웹 애플리케이션을 테스트하기 위해 개발되었지만, 다양한 자동화 작업(예: 데이터 스크래핑, 웹 기반 작업 자동화)에도 유용합니다. Selenium은 Python을 포함한 여러 언어에서 사용할 수 있으며, 다양한 브라우저를 지원합니다.

Selenium의 주요 구성 요소

  1. Selenium WebDriver: 브라우저를 직접 제어하는 API.
  2. Selenium IDE: GUI 기반의 테스트 기록 및 재생 도구.
  3. Selenium Grid: 분산 환경에서 테스트 실행을 지원하는 도구.

이번 포스팅에서는 Selenium WebDriver를 중심으로 설명하겠습니다.

Selenium 설치하기

Selenium을 사용하려면 Python과 pip가 설치되어 있어야 합니다. 설치가 완료되었다면 다음 명령어를 사용하여 Selenium을 설치할 수 있습니다.

pip install selenium

웹 드라이버 설치

Selenium은 브라우저를 제어하기 위해 각 브라우저에 맞는 WebDriver가 필요합니다. 아래는 주요 브라우저별 WebDriver 설치 링크입니다:

설치한 WebDriver의 경로를 환경 변수에 추가하거나 Python 코드에서 직접 경로를 지정해야 합니다.

Selenium 사용 예제

이제 Selenium을 사용하여 간단한 브라우저 자동화를 구현해 보겠습니다. 예제에서는 Chrome 브라우저를 사용합니다.

1. 브라우저 열기

from selenium import webdriver

# ChromeDriver 경로 설정
driver_path = '/path/to/chromedriver'

# 브라우저 열기
browser = webdriver.Chrome(executable_path=driver_path)

# 특정 URL로 이동
browser.get("https://www.google.com")

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

2. 검색어 입력 및 검색 버튼 클릭

다음은 Google 검색 페이지에서 "Python Selenium"을 검색하는 코드입니다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# ChromeDriver 경로 설정
driver_path = '/path/to/chromedriver'

# 브라우저 열기
browser = webdriver.Chrome(executable_path=driver_path)

# Google 페이지로 이동
browser.get("https://www.google.com")

# 검색창 요소 찾기
search_box = browser.find_element(By.NAME, "q")

# 검색어 입력 및 Enter 키 누르기
search_box.send_keys("Python Selenium")
search_box.send_keys(Keys.RETURN)

# 검색 결과 출력
print("Title of the current page:", browser.title)

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

3. 특정 요소 클릭 및 데이터 추출

아래 예제는 Selenium을 사용하여 특정 링크를 클릭하고 데이터를 추출하는 방법을 보여줍니다.

from selenium import webdriver
from selenium.webdriver.common.by import By

# ChromeDriver 경로 설정
driver_path = '/path/to/chromedriver'

# 브라우저 열기
browser = webdriver.Chrome(executable_path=driver_path)

# 특정 웹사이트로 이동
browser.get("https://example.com")

# 특정 요소 찾기 및 클릭
link = browser.find_element(By.LINK_TEXT, "More information...")
link.click()

# 새 페이지의 제목 출력
print("New page title:", browser.title)

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

동적 웹 페이지 다루기

많은 현대 웹사이트는 JavaScript를 사용하여 동적으로 콘텐츠를 로드합니다. 이러한 경우 Selenium을 사용하면 JavaScript 실행 후의 결과를 처리할 수 있습니다.

예를 들어, 특정 요소가 로드될 때까지 기다리는 코드는 다음과 같습니다:

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

# ChromeDriver 경로 설정
driver_path = '/path/to/chromedriver'

# 브라우저 열기
browser = webdriver.Chrome(executable_path=driver_path)

# 특정 웹사이트로 이동
browser.get("https://example.com")

# 특정 요소가 로드될 때까지 대기
try:
    element = WebDriverWait(browser, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
    print("Element is ready:", element.text)
except:
    print("Element loading timed out")
finally:
    browser.quit()

Selenium의 실전 활용

  1. 테스트 자동화: Selenium은 기능 테스트를 자동화하는 데 유용합니다.
  2. 웹 데이터 스크래핑: BeautifulSoup과 함께 사용하면 동적 웹 데이터 수집에 강력합니다.
  3. 정기 작업 자동화: 반복적인 웹 작업(예: 데이터 입력, 정보 조회)을 자동화하여 시간을 절약할 수 있습니다.

주의 사항

  • 웹 사이트의 서비스 약관을 위반하지 않도록 Selenium을 사용할 때 주의하세요.
  • 과도한 요청은 서버에 부하를 줄 수 있으므로 속도 제한을 설정하는 것이 좋습니다.
  • Selenium은 브라우저 기반으로 작동하기 때문에 API를 사용할 수 있는 경우보다 느릴 수 있습니다.

마무리

이제 Selenium을 사용하여 Python으로 브라우저를 자동화하는 방법을 알게 되었습니다. Selenium은 배우기 쉽고 다양한 작업에 활용할 수 있는 도구입니다.


참고 자료

728x90