: selenium
은 Python을 이용해서 웹 브라우저를 조작할 수 있는 자동화 프레임워크이다.
: 라이브러리 설치와 Web Driver를 미리 설치해두고 사용한다. 버전은 4.14.0를 사용하였다.
# 주피터 환경에서 설치
%pip install selenium
%pip install webdriver-manager
# 아나콘다에 설치
conda install -c conda-forge selenium
WebDriver 모듈을 이용하여 크롬창을 띄우는 방법이다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 다음 코드를 통해서 드라이버를 같이 불러온다.
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("http://www.example.com")
# with-as 버전
with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
driver.get("http://www.example.com")
: By와 find_element를 활용하여 페이지 내 요소를 찾을 수 있다.
.find_element(by, target)
: 하나.find_elements(by, target)
: 여러개# p태그를 찾는 예시
with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
driver.get("http://www.example.com")
print(driver.find_element(By.TAG_NAME, "p").text)
: 동적 페이지를 스크래핑하기 위해서는 페이지 로딩시간을 기다리는 것이 필요한 경우가 존재한다.
driver.implicitly_wait(5)
from selenium.webdriver.support import expected_conditions as EC
# 요소가 존재하면 그 요소를 반환한다.
element = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,'')))
: ActionChains를 활용하여 마우스와 키보드 입력과 같은 동작을 수행할 수 있다.
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver import Keys, ActionChains
# 버튼 클릭
button = driver.find_element(By.XPATH,'')
ActionChains(driver).click(button).perform()
# input 요소에 값 전달.
text_input = driver.find_element(By.XPATH,'')
ActionChains(driver).send_keys_to_element(text_input, "input_text").perform()
: 셀레니움이 많이 업데이트 되어서 편리해졌다. 최신 버전의 강의를 듣고 환기해보는 시간이 되었다.