[python] selenium
selenium
브라우저를 이용하여 크로링등을 할때 주로 사용한다.
install
pip install -U selenium
pip install selenium
예제1
display 가 'none'으로 설정된 엘리먼트 내용 가져오기
from selenium import webdriver
from selenium.webdriver.common.by import By
def start():
driver = webdriver.Chrome()
url = "......"
driver.get(url)
table = driver.find_element(By.CLASS_NAME, 'tb_infor_03')
tbody = table.find_element(By.TAG_NAME, 'tbody')
rows = tbody.find_elements(By.TAG_NAME, 'tr')[0]
body = rows.find_elements(By.TAG_NAME, 'td')
# body = rows.find_elements(By.CLASS_NAME, 'mobileHide')
driver.execute_script("var mobileHide = document.getElementsByClassName('mobileHide');for(var i=0; i < mobileHide.length; i++) mobileHide[i].style.display = 'block';")
for index, value in enumerate(body):
print(value.text)
driver.quit()
start()
execute_script
자바스크립트를 실행할때 사용
driver.execute_script("var mobileHide = document.getElementsByClassName('mobileHide');for(var i=0; i < mobileHide.length; i++) mobileHide[i].style.display = 'block';")
driver.execute_script(
"var mobileHide = document.getElementsByClassName('mobileHide');for(var i=0; i < mobileHide.length; i++) mobileHide[i].setAttribute('style', 'display:block !important');")
page_source
현재의 페이지소스를 가져온다.
page_source = driver.page_source
# BeautifulSoup를 사용하여 HTML 파싱
soup = BeautifulSoup(page_source, 'html.parser')
WebDriverWait
특정 조건을 만족할때 까지 대기한다.
동적으로 element 가 생성될때 그 element가 로딩될때 까지 대기한다.
from selenium.webdriver.support.ui import WebDriverWait
table = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.CLASS_NAME, 'my-class'))
)
expected_conditions
presence_of_element_located
특정 Element가 있는지 확인
from selenium.webdriver.support import expected_conditions as EC
EC.presence_of_element_located((By.ID, 'srchWord'))
element_to_be_clickable
클릭할 수 있는 element인지 확인
search_button = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, 'a.btn_normal.blue'))
)
search_button.click()