본문 바로가기
카테고리 없음

[Python] 파이썬 selenium example 예시 3개 (베이스 코드)

by 월천무기 2024. 11. 8.

Selenium은 웹 브라우저를 자동화하는 강력한 도구로, 다양한 웹 테스트와 데이터 스크래핑 작업에 널리 사용됩니다. 이 글에서는 Python과 Selenium을 사용하여 웹 브라우저를 자동화하는 방법에 대해 다룹니다.

 

당근마켓, 중고나라 등등 여러 웹사이트 데이터를 가져오는데 자주 사용하는 셀레니움입니다 ㅎㅎ
제 경험에 의하면 외주개발을 하거나 자동화 프로그램을 개발할때 자주 사용하는 selenium입니다 !

 

python selenium example 예제 코드 3개

1. Selenium 설치하기 (feat. pip 설치)

먼저, Selenium 모듈과 웹 브라우저 자동화에 필요한 웹드라이버를 설치해야 합니다.

pip install selenium

웹드라이버는 브라우저와 Selenium 간의 통신을 도와주는 프로그램입니다. 사용 중인 브라우저에 맞는 드라이버를 설치해야 합니다. 예를 들어, Chrome의 경우 ChromeDriver를 다운로드한 후 해당 경로를 환경 변수에 추가합니다.

2. 기본 설정과 브라우저 열기

웹드라이버 설치 후에는 Selenium을 사용해 브라우저를 열고 웹 페이지에 접속할 수 있습니다. 다음은 Chrome 브라우저를 여는 기본 코드입니다.

from selenium import webdriver

# ChromeDriver 경로를 지정합니다.
driver = webdriver.Chrome(executable_path='path/to/chromedriver')
driver.get('https://www.example.com')  # 원하는 URL로 이동합니다.

위 코드에서 executable_path에 ChromeDriver의 경로를 입력합니다. driver.get() 메서드를 사용하여 원하는 URL로 이동할 수 있습니다.

3. 웹 요소 찾기

Selenium은 다양한 방식으로 웹 요소를 찾을 수 있습니다. 아래는 대표적인 메서드들입니다.

  • find_element_by_id: ID로 요소 찾기
  • find_element_by_name: Name 속성으로 요소 찾기
  • find_element_by_class_name: 클래스 이름으로 요소 찾기
  • find_element_by_tag_name: 태그 이름으로 요소 찾기
  • find_element_by_css_selector: CSS 선택자로 요소 찾기
  • find_element_by_xpath: Xpath로 요소 찾기

예를 들어, ID로 특정 버튼을 찾고 클릭하려면 다음과 같은 코드를 사용할 수 있습니다.

button = driver.find_element_by_id('submit-button')
button.click()

4. 텍스트 입력 및 버튼 클릭

웹 자동화의 핵심 작업 중 하나는 텍스트 필드에 값을 입력하고 버튼을 클릭하는 것입니다. Selenium에서는 send_keys 메서드를 사용하여 텍스트를 입력하고, click 메서드로 버튼을 클릭할 수 있습니다.

# 텍스트 필드에 값 입력
input_field = driver.find_element_by_name('username')
input_field.send_keys('my_username')

# 버튼 클릭
login_button = driver.find_element_by_xpath('//button[@type="submit"]')
login_button.click()

5. 대기(Wait) 사용하기

웹 페이지가 로드되기까지 시간이 걸릴 수 있습니다. Selenium에서는 implicitly_wait, WebDriverWait과 같은 대기 메서드를 제공합니다.

  • implicitly_wait: 전역적으로 대기 시간을 설정합니다.
  • WebDriverWait: 특정 조건이 충족될 때까지 대기합니다.

다음은 요소가 나타날 때까지 기다리는 예제입니다.

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

# 최대 10초 동안 기다림
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'my-element'))
)

6. 스크린샷 캡처

웹 자동화 도중 특정 상태에서 현재 페이지 스크린샷을 저장하고 싶을 때 save_screenshot 메서드를 사용할 수 있습니다.

driver.save_screenshot('screenshot.png')

7. 브라우저 종료

작업이 끝나면 브라우저를 종료하여 자원을 해제해야 합니다. close()quit() 메서드가 있으며, close()는 현재 탭만 닫고 quit()는 모든 탭을 닫고 드라이버를 종료합니다.

driver.quit()

예제: 로그인 자동화

아래는 로그인 페이지에서 아이디와 비밀번호를 입력하고 로그인 버튼을 클릭하는 예제입니다.

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

driver = webdriver.Chrome()

try:
    # 페이지 이동
    driver.get('https://www.example.com/login')

    # 아이디 및 비밀번호 입력
    driver.find_element_by_name('username').send_keys('your_username')
    driver.find_element_by_name('password').send_keys('your_password')

    # 로그인 버튼 클릭
    driver.find_element_by_xpath('//button[@type="submit"]').click()

    # 로그인 후 대기
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'dashboard')))
    print("로그인 성공")

except Exception as e:
    print("오류 발생:", e)
finally:
    driver.quit()

마무리

이 글에서는 Python과 Selenium을 사용하여 웹 자동화의 기본적인 작업을 다루었습니다. Selenium은 웹 애플리케이션의 테스트나 데이터 수집에 매우 유용한 도구입니다. 다양한 방법으로 웹 요소를 찾고 조작할 수 있으며, Selenium의 강력한 기능을 통해 여러분의 웹 자동화 작업을 더욱 쉽게 수행할 수 있습니다.

Selenium은 지속적으로 업데이트되며, 다양한 웹드라이버와 호환됩니다. 공식 문서를 참고하여 필요한 기능을 더 깊이 탐구해 보세요.

 

제가 개발할때 직접 자주 사용하는 selenium library에 대한 소개였습니다 : )


참고 자료: