파이썬 Selenium을 활용한 웹 자동화 및 데이터 스크래핑 완벽 가이드

파이썬 Selenium을 활용한 웹 자동화 및 데이터 스크래핑 완벽 가이드

웹 애플리케이션을 자동화하거나 데이터를 수집하려면 Selenium이 강력한 도구가 될 수 있습니다. 특히 파이썬과 함께 사용하면 웹 브라우저를 직접 제어하고, 특정 요소를 조작하며, 데이터를 추출하는 등의 작업을 손쉽게 수행할 수 있습니다. 이번 글에서는 Selenium의 개념부터 설치, 기본 사용법, 데이터 스크래핑 및 웹 자동화까지 자세히 알아보겠습니다.


1. Selenium이란?

Selenium은 웹 애플리케이션을 자동으로 테스트하고 조작할 수 있는 오픈 소스 도구입니다. 주로 웹 테스트 자동화에 사용되지만, 웹 데이터 스크래핑, 반복적인 웹 작업 자동화 등 다양한 용도로 활용할 수 있습니다.

Selenium을 사용하면 다음과 같은 작업을 수행할 수 있습니다.

  • 웹 페이지를 자동으로 열고 탐색하기
  • 버튼 클릭, 폼 입력 등 웹 요소 조작하기
  • 웹 페이지의 텍스트 및 속성 정보 추출하기
  • 스크롤 및 동적 콘텐츠 로드 처리하기
  • 웹 애플리케이션 테스트 자동화

2. Selenium 설치 및 WebDriver 설정

Selenium을 사용하려면 먼저 Selenium 라이브러리와 웹 드라이버를 설치해야 합니다.

🔹 Selenium 라이브러리 설치

파이썬 환경에서 Selenium을 설치하려면 다음 명령어를 실행하세요.

pip install selenium

🔹 WebDriver 설치

Selenium은 브라우저를 조작하기 위해 각 브라우저에 맞는 WebDriver를 필요로 합니다.
아래에서 원하는 브라우저에 맞는 드라이버를 다운로드하세요.

브라우저드라이버다운로드 링크
ChromeChromeDriver다운로드
EdgeEdgeDriver다운로드
FirefoxGeckoDriver다운로드

📌 드라이버 설치 후 환경 변수 설정:
다운로드한 WebDriver를 프로젝트 폴더에 저장하거나, 시스템 PATH 환경 변수에 추가하세요.


3. Selenium WebDriver 기본 사용법

설치가 완료되면 Selenium을 사용하여 웹 브라우저를 자동으로 제어할 수 있습니다.

🔹 브라우저 실행 및 웹 페이지 열기

from selenium import webdriver

# Chrome WebDriver 실행
driver = webdriver.Chrome()

# 특정 웹사이트 열기
driver.get("https://www.python.org")

# 웹 페이지 제목 출력
print(driver.title)

# 브라우저 닫기
driver.quit()

driver.get(url)을 사용하여 원하는 웹 페이지를 엽니다.
driver.quit()을 호출하여 브라우저를 닫아야 합니다.


4. 웹 페이지 요소 조작하기

웹 페이지의 특정 요소를 찾아 값을 입력하거나 버튼을 클릭할 수도 있습니다.

🔹 요소 찾기

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

driver = webdriver.Chrome()
driver.get("https://www.google.com")

# 검색 입력창 찾기
search_box = driver.find_element(By.NAME, "q")

# 검색어 입력 및 엔터 키 입력
search_box.send_keys("Selenium Python")
search_box.submit()

# 결과 페이지 제목 출력
print(driver.title)

driver.quit()

find_element(By.NAME, "q"): 요소를 name 속성으로 찾음
send_keys(): 입력값을 전달
submit(): 폼 제출

📌 다른 방식으로 요소 찾기

element = driver.find_element(By.ID, "element_id")         # ID로 찾기
element = driver.find_element(By.CLASS_NAME, "class_name") # 클래스 이름으로 찾기
element = driver.find_element(By.TAG_NAME, "h1") # 태그 이름으로 찾기
element = driver.find_element(By.LINK_TEXT, "링크 텍스트") # 링크 텍스트로 찾기

5. 데이터 스크래핑 (웹 데이터 추출)

Selenium을 활용하면 웹 페이지에서 원하는 데이터를 가져올 수 있습니다.

🔹 특정 요소의 텍스트 가져오기

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

driver = webdriver.Chrome()
driver.get("https://www.python.org")

# 특정 요소의 텍스트 가져오기
element = driver.find_element(By.TAG_NAME, "h1")
print("페이지 제목:", element.text)

driver.quit()

🔹 리스트 형태의 데이터 가져오기

driver.get("https://www.python.org")

# 여러 요소 가져오기
news = driver.find_elements(By.CLASS_NAME, "event-widget li")

for item in news:
print(item.text)

driver.quit()

find_elements()를 사용하면 여러 개의 요소를 리스트로 가져올 수 있습니다.


6. 웹 페이지 스크롤 및 동적 콘텐츠 로드

Selenium은 JavaScript를 실행하는 웹사이트에서도 데이터를 가져올 수 있도록 스크롤 기능을 제공합니다.

🔹 웹 페이지 끝까지 스크롤하기

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

🔹 특정 요소로 스크롤 이동

element = driver.find_element(By.ID, "target-element")
driver.execute_script("arguments[0].scrollIntoView();", element)

7. 웹 자동화: 로그인 예제

Selenium을 사용하면 로그인 자동화도 가능합니다.

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

driver = webdriver.Chrome()
driver.get("https://example.com/login")

# 아이디 및 비밀번호 입력
driver.find_element(By.NAME, "username").send_keys("my_username")
driver.find_element(By.NAME, "password").send_keys("my_password")

# 로그인 버튼 클릭
driver.find_element(By.NAME, "submit").click()

driver.quit()

✅ 자동 로그인 기능을 활용하면 반복적인 로그인 작업을 줄일 수 있습니다.


8. Selenium 사용 시 주의할 점

  • 웹사이트 정책 확인:
    일부 웹사이트는 자동화 접근을 제한할 수 있습니다. robots.txt 또는 서비스 약관을 확인하세요.
  • IP 차단 방지:
    • time.sleep(1~3)을 사용하여 자연스럽게 동작하도록 설정
    • VPN 또는 프록시를 활용하여 요청 분산
  • Headless 모드 사용:
    GUI 없이 백그라운드에서 실행하려면 options.add_argument("--headless")를 추가하세요.
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)

9. 결론

Selenium을 활용하면 웹 애플리케이션을 자동화하고, 데이터를 수집하며, 반복적인 웹 작업을 효율적으로 수행할 수 있습니다. 특히 파이썬과 함께 사용하면 강력한 웹 자동화 솔루션을 구축할 수 있습니다.

💡 Selenium으로 어떤 자동화 작업을 해보고 싶나요? 댓글로 공유해주세요! 😊