본문 바로가기

프로그래밍&IT/파이썬

[파이썬] 웹 스크래핑.6 - Selenium 추가 내용 , 메서드, 속성

 

Selenium 추가 내용 & 활용

브라우저가 모두 로딩이 안 되어있다면 버튼 수행을 할 수가 없으므로,

일정 시간대 기후, 버튼 클릭을 하는 내용

### 기본 내용
from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window() # 브라우저 최대화

url = "[이동할 사이트 url]"
browser.get(url)

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

# 링크 텍스트로 요소 추출하고, 버튼 click
browser.find_elements_by_link_text("조회하기").click()
try:
    #성공했을 때 동작 수행
    #특정 XPath의 내용을 가져온다.
    elem = WebDriverWait(browser, 10).until(EC.presence_of_element_located(By.XPATH, "//*[@id]"))
    print(elem.text)
finally:
    browser.quit() # 실패하면, 브라우저 종료

 

메서드 , 속성 등 정리

DOM내부에 있는 요소 찾는 것

find_element_by_id(id)  id속성으로 요소를 하나 추출한다  
find_element_by_name(name) name속성으로 요소를 하나 추출한다
find_element_by_css_selector(query)  css선택자로 요소를 하나 추출한다  
find_elements_by_css_selector(query)   css선택자로 요소를 모두 추출한다
find_element_by_xpath(query)  XPath를 지정해 요소를 하나 추출한다 
find_elements_by_xpath(query)   XPath를 지정해 요소를 모두 추출한다
find_element_by_tag_name(name)     태그이름이 name에 해당하는 요소를 하나 추출한다  
find_elements_by_tag_name(name)   태그이름이 name에 해당하는 요소를 모두추출한다  
find_element_by_link_text(text)       링크 텍스트로 요소를 하나 추출한다
find_element_by_partial_link_text(text) 링크의 자식요소에 포함돼 있는 텍스트로 요소를 하나 추출한다. 
find_elements_by_partial_link_text(text)  링크의 자식요소에 포함돼 있는 텍스트로 요소를 모두 추출한다
find_element_by_class_name(name)    클래스 이름이 name에 해당하는 요소를 하나 추출한다.  
find_elements_by_class_name(name)   클래스 이름이 name에 해당하는 요소를 모두 추출한다

 

DOM 요소에 적용할 수 있는 메소드

clear()  글자를 입력할 수 있는 요소의 글자를 지운다.   
click()     요소를 클릭한다  
get_attribute(name)   요소의 속성중에 name에 해당하는 속성의 값을 추출한다  
is_displayed() 요소가 화면에 출력되는지 확인한다.  
is_enabled()    요소가 활성화 되었는지 확인한다.  
is_selected()  체크박스등의 요소가 선택 상태인지 확인한다  
screenshot(filename) 화면을 캡쳐해서 filename으로 저장한다 
send_keys(value)   키를 입력한다. 일반적으로 text데이터를 보낸다  

 

DOM 요소에 적용할 수 있는 속성들

id 요소의 id 속성
location 요소의 위치
parent 부모 요소
rect  크기와 위치정보를 가진 딕셔너리 자료형을 리턴한다.
screenshot_as_base64 스크린샷을 base64형태로 추출한다.  
screenshot_as_png 스크린샷을 PNG형식의 바이너리로 추출한다.
size 요소의 크기  
tag_name 태그이름  
text 요소내부의 글자 

submit() : 입력 양식을 전송
value_of_css_property(name): name에 해당하는 CSS속성 값을 추출한다.