반응형
셀레니움은 웹 브라우저를 제어하고 자동화하는 데 사용되는 오픈 소스 프레임워크입니다. 셀레니움4에서는 웹 페이지의 요소를 찾기 위해 find_element()와 find_elements() 메서드를 제공합니다.
find_element()
find_element() 메서드는 웹 페이지에서 지정한 조건과 일치하는 첫 번째 요소를 반환합니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
# 네이버 접속 및 페이지가 전부 로드 될 때 까지 3초간 대기
driver.get('https://www.naver.com/')
driver.implicitly_wait(3)
# 검색창을 찾아 "끄적끄적 코딩 공방" 입력
search_bar = driver.find_element(By.ID, 'query')
search_bar.send_keys('끄적끄적 코딩 공방')
# 엔터키를 눌러 검색
search_bar.send_keys(Keys.ENTER)
# 3초간 멈춤
time.sleep(3)
위 코드에서는 find_element() 메서드를 사용하여 검색창 요소를 찾은 후, send_keys() 메서드로 "끄적끄적 코딩 공방"을 입력하고, 해당 요소에 엔터키를 입력해 검색 작업을 합니다.
find_elements()
find_elements() 메서드는 웹 페이지에서 지정한 조건과 일치하는 모든 요소를 반환합니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
# 네이버 접속 및 페이지가 전부 로드 될 때 까지 3초간 대기
driver.get('https://www.naver.com/')
driver.implicitly_wait(3)
# 요소들 검색
link_list = driver.find_elements(By.CLASS_NAME, 'link_service')
#요소를 순회하며 텍스트와 링크 출력
for link in link_list :
href = link.get_attribute('href')
print(f'{link.text} : {href}')
위 코드에서는 find_elements() 메서드를 사용하여 사진의 요소를 모두 찾은 후, text 속성으로 링크의 텍스트와 링크를 출력합니다.
차이점
find_element()와 find_elements()는 모두 웹 페이지의 요소를 찾기 위한 메서드이지만, 다음과 같은 차이점이 있습니다.
특징 | find_element() | find_elements() |
반환 값 | 첫 번째 요소 | 모든 요소 |
예외 발생 여부 | 요소가 발견되지 않을 경우 NoSuchElementException 예외 발생 | 요소가 발견되지 않을 경우 빈 리스트 반환 |
'파이썬 > 크롤링' 카테고리의 다른 글
셀레니움에서 이미지 비활성화 : 최적화 (0) | 2024.01.29 |
---|---|
셀레니움에서 페이지가 로딩이 될 때까지 기다리는 방법 (2) | 2024.01.28 |
셀레니움의 키보드 : selenium.webdriver.common.keys (0) | 2024.01.24 |
웹 자동화의 핵심 : 셀레니움의 WebElement 란? (0) | 2024.01.23 |
셀레니움에서 스크롤하는 5가지 방법 - Selenium : Scroll (0) | 2024.01.14 |