이번 포스팅에서는 파이썬 웹 자동화 두 번째 글로 웹 요소 선택, 셀레니움 find_element 사용법 위주로 정리해보았습니다.
참고로 앞선 포스팅에서는 (1) 셀레니움 설치 및 기본 설정 (웹 드라이버 자동 설치 방법)에 대해 정리해보았습니다.
이번 포스팅에서는 앞선 셀레니움 설치 및 기본 설정 방법에 이어 가장 파이썬 웹 자동화를 위한 가장 기본이 되는 웹 요소 선택 방법 – 셀레니움 find_element에 대해 정리해보려고 합니다.
실은 22년 말 셀레니움4로 업데이트가 되면서 셀레니움 find_element 또한 문법이 변경되어 많은 혼란을 가져다준 메서드이기도 합니다. 해당 사항에 대해서는 앞선 포스팅에 정리한 바 있습니다.
이번 포스팅에서는 셀레니움 find_element의 각 메서드에 대해서 상세히 정리해보고, 실질적으로 특정 웹페이지에서 셀레니움 find_element를 활용하여 웹 요소를 추출하는 방법에 대해 정리해보았습니다.
셀레니움4 변경점
셀레니움(Selenium)은 웹 테스트와 웹 자동화를 위해 널리 사용되는 파이썬 라이브러리로 가장 많이 사용되는 것은 역시 웹 요소를 선택하는 셀레니움 find_element 요소가 아닐까 싶습니다.
참고로 셀레니움 find_element 문법이 22년 말 셀레니움4로 업데이트되면서 아래와 같이 변경되었는데요,
셀레니움4에서는, 기존 셀레니움3에서 사용되었던
find_element_by_***()
메서드를 모두
find_element(By.***, ***) 와 같은 형태로 변경하였습니다.
참고로 아래와 같은 추가 선언 또한 필요합니다.
from selenium.webdriver.common.by import By
셀레니움 find_element 개요
우선 웹 요소 선택을 위한 셀레니움 find_element를 사용하기 위해서는 아래와 같이 셀레니움 라이브러리를 임포트하고 웹드라이버를 설정이 필요합니다.
1 2 3 4 5 6 7 | #IT매뉴얼(itmanual.net) 파이썬 웹 자동화 (2) 웹 요소 선택 : 셀레니움 find_element 사용법 from selenium import webdriver from selenium.webdriver.common.by import By # 웹드라이버 설정 driver = webdriver.Chrome() |
이와 함께 웹 요소를 선택하기 위한 주요 메서드는 다음과 같습니다.
- find_element(By.ID, ‘***’): ID 속성을 사용하여 웹 요소를 찾습니다.
- find_element(By.NAME, ‘***’): NAME 속성을 사용하여 웹 요소를 찾습니다.
- find_element(By.CLASS_NAME, ‘***’): CLASS 속성을 사용하여 웹 요소를 찾습니다.
- find_element(By.TAG_NAME, ‘***’): 태그 이름을 사용하여 웹 요소를 찾습니다.
- find_element(By.CSS_SELECTOR, ‘***’): CSS 선택자를 사용하여 웹 요소를 찾습니다.
- find_element(By.XPATH, ‘***’): XPATH를 사용하여 웹 요소를 찾습니다.
아래 세션에서는 실제 HTML 코드 예시를 통해 각 메서드를 사용하여 웹 요소를 선택하는 방법을 정리해보겠습니다.
셀레니움 find_element 상세 예시
아래와 같은 HTML 코드에서 각 웹 요소에 대한 추출 방법을 정리하면 아래와 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE html> <html> <head> <title>IT매뉴얼 웹페이지 자동화 (2) 셀레니움 웹요소 선택 예시</title> </head> <body> <h1 id=“title”>IT매뉴얼 (2) 셀레니움 웹요소 선택 예시</h1> <form name=“login”> <input type=“text” name=“username” class=“input-box” placeholder=“Username” /> <input type=“password” name=“password” class=“input-box” placeholder=“Password” /> <input type=“submit” value=“Login” /> </form> <ul id=“menu”> <li class=“menu-item”><a href=“#”>Home</a></li> <li class=“menu-item”><a href=“#”>About</a></li> <li class=“menu-item”><a href=“#”>Contact</a></li> </ul> </body> </html> |
참고의 위의 페이지는 아래와 같이 나타납니다.
이제 각 메서드를 사용하여 웹 요소를 선택해 보겠습니다.
1. ID 속성으로 웹 요소 찾기
title = driver.find_element(By.ID, 'title')
2. NAME 속성으로 웹 요소 찾기
username_input = driver.find_element(By.NAME, 'username') password_input = driver.find_element(By.NAME, 'password')
3. CLASS 속성으로 웹 요소 찾기
input_boxes = driver.find_elements(By.CLASS_NAME, 'input-box')
4. 태그 이름으로 웹 요소 찾기
form = driver.find_element(By.TAG_NAME, 'form')
5. CSS 선택자로 웹 요소 찾기
menu_items = driver.find_elements(By.CSS_SELECTOR, '#menu .menu-item')
6. XPATH로 웹 요소 찾기
login_button = driver.find_element(By.XPATH, '//input[@type="submit"]')
위에서 설명한 각 메소드를 모두 사용해서 코드를 만들어보면 아래와 같습니다. 아래 코드는 각 웹 요소를 선택하고 해당 웹 요소의 텍스트나 속성 값을 출력하는 예시 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #IT매뉴얼(itmanual.net) 파이썬 웹 자동화 (2) 웹 요소 선택 : 셀레니움 find_element 사용법 from selenium import webdriver from selenium.webdriver.common.by import By # 웹드라이버 설정 driver = webdriver.Chrome() # itmanual_net_2강_웹자동화.html 파일에 접근 driver.get(‘file:///C:/파일위치경로/itmanual_net_2강_웹자동화.html’) # ID 속성을 사용하여 웹 요소 선택 후 출력 title = driver.find_element(By.ID, ‘title’) print(f“Title: {title.text}”) # NAME 속성을 사용하여 웹 요소 선택 후 출력 username_input = driver.find_element(By.NAME, ‘username’) password_input = driver.find_element(By.NAME, ‘password’) print(f“Username input: {username_input.get_attribute(‘placeholder’)}”) print(f“Password input: {password_input.get_attribute(‘placeholder’)}”) # CLASS 속성을 사용하여 웹 요소 선택 후 출력 input_boxes = driver.find_elements(By.CLASS_NAME, ‘input-box’) for i, input_box in enumerate(input_boxes): print(f“Input box {i+1}: {input_box.get_attribute(‘placeholder’)}”) # 태그 이름을 사용하여 웹 요소 선택 후 출력 form = driver.find_element(By.TAG_NAME, ‘form’) print(f“Form: {form.get_attribute(‘name’)}”) # CSS 선택자를 사용하여 웹 요소 선택 후 출력 menu_items = driver.find_elements(By.CSS_SELECTOR, ‘#menu .menu-item’) for i, menu_item in enumerate(menu_items): print(f“Menu item {i+1}: {menu_item.text}”) # XPATH를 사용하여 웹 요소 선택 후 출력 login_button = driver.find_element(By.XPATH, ‘//input[@type=”submit”]’) print(f“Login button: {login_button.get_attribute(‘value’)}”) # 웹드라이버 종료 driver.quit() |
위의 예시를 파이썬 – VSCODE를 통해 실행시키면 아래와 같은 결과가 나타납니다.
위의 예시에서 각 메서드를 사용하여 웹 요소를 선택하는 방법을 정리해보았는데요, 이를 바탕으로 셀레니움을 활용하여 웹 자동화 프로젝트를 진행할 수 있습니다.
이번 포스팅에서는 셀레니움 find_element의 각 메서드에 대해서 상세히 정리해보고, 실질적으로 특정 웹페이지에서 셀레니움 find_element를 활용하여 웹 요소를 추출하는 방법에 대해 정리해보았습니다.
앞선 포스팅에서 정리한 파이썬 프로그래밍 관련 글은 아래와 같습니다.