2020. 11. 9. 10:40ㆍPYTHON
selenium
웹브라우저를 컨트롤 하여 웹 자동화 하는 도구 중에 하나이다.
가장 원초적인 자동화는 화면의 좌표를 기준으로 한 자동화
selenium 도구를 이용하는 웹 자동화
윈도우즈의 자동화
작업의 자동화
WebDriver.Firefox
WebDriver.Chrom
WebDriver.le
WebDriver.OPera
WebDriver.PhanthomJS PhantomJS
CTL 형식의 웹브라우저
github.com/mozilla/geckodriver/releases
Releases · mozilla/geckodriver
WebDriver for Firefox. Contribute to mozilla/geckodriver development by creating an account on GitHub.
github.com
sites.google.com/a/chromium.org/chromedriver/downloads
Downloads - ChromeDriver - WebDriver for Chrome
WebDriver for Chrome
sites.google.com
Selenium으로 DOM 요소를 선택하는 방법
DOM 내부에 있는 여러개의 요소들 중에에서 처음 찾아 지는 요소를 추출하는 메소드
find_element_by_id(id) | id 속성으로 요소를 하나 추출한다. |
find_element_by_name(name) | name속성으로 요소를 하나 추출한다. |
find_element_by_xpath(query) | CSS 선택자로 요소를 하나 추출한다. |
find_element_by_xpath(query) | XPath를 지정해 요소를 하나 추출한다. |
find_element_by_tag_name(name) | 태그 이름이 name에 해당하는 요소를 하나 추출한다. |
find_element_by_link_text(text) | 링크 텍스트로 요소를 하나 추출한다. |
find_element_by_partial_link_text(text) | 링크의 자식요소에 포함돼 있는 텍스트로 요소를 하나 추출한다. |
find_element_by_class_name(name) | 클래스 이름이 name에 해당하는 요소를 하나 추출한다. |
DOM 내부에 있는 여러개의 요소를 모두 추출하는 메소드
find_elements_by_css_selector(query) |
find_elements_by_xpath(query) |
find_elements_by_tag_name(name) |
find_elements_by_class_name(name) |
find_elements_by_partial_link_text(text) |
메소드를 이용해서 아무 요소도 찾지 못한 경우 발생하는 예외처리
NoSuchElementException |
DOM 요소에 적용할 수 있는 메소드 / 속성
clear() | 글자를 입력할 수 있는 요소의 글자를 지운다. |
click() | 요소를 클릭한다. |
get_attribute(name) | 요소의 속성 중에 name에 해당되는 속성의 값을 추출한다. |
is_displayed() | 요소가 화면에 출력되는지 확인한다. |
is_enabled() | 요소가 활성화 되었는지 확인한다. |
is_selected() | 체크박스 등의 요소가 선택 상태인지 확인한다. |
screenshot(filename) |
화면을 캡처해서 filename으로 저장한다. |
send_keys(value) |
키를 입력한다. 일반적으로 text 데이터를 보낸다. |
value가 텍스트 데이터가 아닌 경우 (특수키,방향키 funtion key(f1, f2, f3 .... f12), Enter, Tab, Control 등등...)
즉, 특수키를 사용해야 하는 경우에는 별도의 모듈을 사용해야한다.
from selenium.Webdriver.common.keys.import Keys
방향키 : ARROW_DOWN / ARROW_LEFT / ARROW_RIGHT / ARROW_UP
BACKSPACE / DELETE / HOME / END / INSERT
ALT / COMMAND / CONTROL / SHIFT
ENTER / ESCAPE / SPACE / TAB
F1 / F2 / F3 / F4 ..... / F12
submit() 입력 양식을 전송한다.
value_of_css_property(name) name에 해당하는 CSS 속성 값을 추출한다.
속성
id | 요소의 id 속성 |
location | 요소의 위치 |
parent | 부모 요소 |
rect | 크기와 위치정보를 가진 딕셔너리 자료형을 리턴한다. |
screenshot_as_base64 | 스크린샷을 base64형태로 추출한다. |
creenshot_as_png | 스크린샷을 PNG형식의 바이너리로 추출한다. |
size | 요소의 크기 |
tag_name | 태그이름 |
text | 요소내부의 글자 |
////////// PhantomJS 용 메서드와 속성 ///////////////
add_cookie(cookie_dict) 쿠키 값을 딕셔너리 형식으로 지정
>> driver.add_cookie({'name':'kim', 'value':'test'})
driver.add_cookie({'name':'kim', 'value':'test', 'path':'/')}
driver.add_cookie({'name':'kim', 'value':'test', 'path':'/', 'secure':True})
back() /forward() 이전 페이지 또는 다음 페이지로 이동
close() 브라우저를 닫다
current_url 현재 url 을 추출한다.
delete_all_cookies() 모든 쿠키를 제거한다.
delete_cookie(name) 특정 쿠키를 제거한다.
get_cookie(name) 특정 쿠키를 읽는다.
get_cookies() 모든 쿠키 값을 추출한다.
execute(command, params) 브라우저의 고유 명령어를 실행
get(url) 웹 페이지를 읽어들인다.
get_screenshot_as_file(filename) 스크린샷을 파일로 저장
get_screenshot_as_png PNG형식으로 스크린샷의 바이너리 추출
save_screenshot(filename) 스크린샷을 저장
implicitly_wait(sec) 최대 대기시간을 초 단위로 지정해서 처리가 끝날 때 까지 대기
quit() 드라이버를 종료시켜서 브라우저를 닫는다.
title 현재 페이지의 타이틀을 추출
'PYTHON' 카테고리의 다른 글
(PYTHON) 공공데이터 포털사이트에 제공해주는 API를 뽑아오기 (0) | 2020.11.12 |
---|---|
(PYTHON) selenium을 이용한 자동 로그인 ,검색처리 (0) | 2020.11.09 |
(PYTHON)데이터 크롤링 (0) | 2020.11.04 |
(PYTHON)데이터 시각화 (0) | 2020.11.03 |
(Python) 문제 풀이 1 (0) | 2020.10.19 |