파이썬 셀레니움(Selenium)을 사용한 웹 자동화

2024. 9. 11. 00:27유용한 정보

728x90
반응형

파이썬 셀레니움(Selenium)을 사용한 웹 자동화

파이썬 셀레니움(Selenium)은 웹 브라우저를 자동으로 제어하고, 다양한 웹 애플리케이션을 테스트하거나 데이터를 수집하는 등의 작업에 매우 유용한 도구입니다. 셀레니움은 특히 웹 스크래핑, 웹 테스트 자동화 등에서 많이 사용되며, 사용자가 브라우저를 직접 조작하지 않고도 원하는 작업을 수행할 수 있도록 돕습니다.

이번 글에서는 파이썬과 셀레니움을 사용하여 웹 브라우저를 제어하는 방법, 기본 설정 방법, 다양한 셀레니움 명령어에 대해 소개합니다.

파이썬 셀레니움

 

파이썬 셀레니움 시작하기

 

1. 셀레니움 설치

 

셀레니움을 사용하려면 먼저 파이썬에서 사용할 수 있도록 셀레니움 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다.

pip install selenium

이 명령을 실행하면 셀레니움 라이브러리가 설치됩니다.

 

2. 웹드라이버(WebDriver) 다운로드

 

셀레니움은 웹 브라우저를 제어하기 위해 브라우저마다 전용 드라이버가 필요합니다. 가장 많이 사용되는 브라우저인 Chrome의 경우, ChromeDriver를 다운로드하여 사용합니다.

ChromeDriver를 다운로드한 후, 파이썬 코드에서 이 드라이버를 불러와 사용할 수 있습니다. 다운로드한 파일의 경로를 파이썬 스크립트에서 지정해줘야 합니다.

 

반응형

 

 

3. 기본적인 셀레니움 코드 구조

 

셀레니움을 이용해 웹 페이지를 여는 간단한 예제를 살펴보겠습니다.

from selenium import webdriver

# Chrome 드라이버 경로 설정
driver = webdriver.Chrome('/path/to/chromedriver')

# 원하는 웹사이트 열기
driver.get('https://www.example.com')

# 웹 페이지 타이틀 출력
print(driver.title)

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

위 코드는 Chrome 브라우저를 열고, 지정된 URL에 접속한 후 웹 페이지의 타이틀을 출력한 다음 브라우저를 종료하는 기본적인 셀레니움 사용법을 보여줍니다.

 

728x90

 

셀레니움의 주요 기능

 

1. 웹 요소 찾기

 

셀레니움을 사용하여 웹 페이지에서 특정 요소를 찾는 방법에는 여러 가지가 있습니다. 대표적으로 find_element_by 메서드를 사용하여 HTML 요소를 검색할 수 있습니다.

 

ID로 요소 찾기

element = driver.find_element_by_id('element_id')

 

클래스 이름으로 요소 찾기

element = driver.find_element_by_class_name('class_name')

 

태그 이름으로 요소 찾기

element = driver.find_element_by_tag_name('input')

 

CSS 셀렉터로 요소 찾기

element = driver.find_element_by_css_selector('div.content')

 

XPath로 요소 찾기

element = driver.find_element_by_xpath('//button[@class="submit"]')

 

2. 요소 상호작용

 

셀레니움은 웹 요소를 찾은 후 그와 상호작용할 수 있습니다. 예를 들어, 텍스트를 입력하거나 버튼을 클릭하는 등의 동작을 수행할 수 있습니다.

 

텍스트 입력

search_box = driver.find_element_by_name('q')
search_box.send_keys('Selenium Python')

 

버튼 클릭

submit_button = driver.find_element_by_name('btnK')
submit_button.click()

 

3. 웹페이지 탐색

 

셀레니움을 사용하여 웹페이지를 탐색하는 다양한 방법이 있습니다.

 

새 URL로 이동

driver.get('https://www.example.com')

 

뒤로 가기

driver.back()

 

앞으로 가기

driver.forward()

 

새로고침

driver.refresh()

 

4. 대기 (Wait) 처리

 

웹 페이지가 로드되거나 특정 요소가 나타나기를 기다리는 경우가 종종 있습니다. 셀레니움은 이런 경우를 위해 implicitly_wait() 또는 WebDriverWait을 제공합니다.

 

암시적 대기 (Implicit Wait)

 

암시적 대기는 모든 요소를 찾을 때 일정 시간 기다리는 방식입니다.

driver.implicitly_wait(10)  # 최대 10초까지 대기

 

명시적 대기 (Explicit Wait)

 

명시적 대기는 특정 조건이 충족될 때까지 기다리는 방식입니다.

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

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'element_id'))
)

 

웹 스크래핑에 활용하기

 

셀레니움을 사용하면 웹 페이지의 다양한 데이터를 수집할 수 있습니다. 예를 들어, 특정 페이지의 제목이나 텍스트, 이미지 URL 등을 추출할 수 있습니다.

# 웹 페이지의 모든 링크 가져오기
links = driver.find_elements_by_tag_name('a')
for link in links:
    print(link.get_attribute('href'))

위 코드는 웹 페이지의 모든 링크를 가져와 출력하는 예제입니다.

 

Selenium을 활용한 예제

 

구글 검색 예제

아래 코드는 셀레니움을 사용해 구글에서 검색을 수행하는 예제입니다.

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

# Chrome 드라이버 실행
driver = webdriver.Chrome('/path/to/chromedriver')

# 구글 웹사이트 열기
driver.get('https://www.google.com')

# 검색 창 찾기
search_box = driver.find_element_by_name('q')

# 검색어 입력
search_box.send_keys('Python Selenium')

# 검색 실행
search_box.send_keys(Keys.RETURN)

# 결과 페이지 타이틀 출력
print(driver.title)

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

이 코드는 구글 페이지에 접속한 후, 'Python Selenium'이라는 검색어를 입력하고 결과 페이지의 타이틀을 출력한 뒤 브라우저를 종료합니다.

 

결론

파이썬 셀레니움은 웹 브라우저를 자동으로 제어할 수 있는 강력한 도구로, 웹 자동화 및 테스트, 스크래핑 작업에서 유용하게 사용할 수 있습니다. 웹 요소를 찾고 상호작용하는 다양한 방법을 제공하며, 이를 통해 복잡한 웹 작업도 쉽게 처리할 수 있습니다.

셀레니움은 간단한 설정으로 시작할 수 있지만, 다양한 기능을 지원하기 때문에 학습하고 익숙해지면 더욱 복잡한 자동화 작업도 손쉽게 처리할 수 있습니다.

728x90
반응형