◾Selenium
Selenium
- 웹 브라우저를 원격 조작하는 도구
- 자동으로 URL을 열고 클릭 등이 가능
- 스크롤, 문자 입력, 화면 캡처 등등
- 설치 :
파이썬 모듈
+ 크롬 드라이버
- Beautiful Soup으로 해결할 수 없을 때 사용
- 접근한 웹 주소를 알 수 없을 때
- 자바스크립트를 사용하는 웹페이지의 경우(동적 페이지)
- 웹 브라우저로 접근하지 않으면 안될 때
from selenium import webdriver
driver = webdriver.Chrome('../driver/chromedriver.exe')
driver.get('https://www.naver.com')
driver.quit()
◾Selenium 기초
- 동작
- 크롬 드라이버 경로 지정
- get 명령으로 접근하고 싶은 주소 지정
- quit 명령으로 종료
driver = webdriver.Chrome('../driver/chromedriver.exe')
driver.get('https://velog.io/@skarb4788/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B84-%EB%84%A4%EC%9D%B4%EB%B2%84-%EC%98%81%ED%99%94-%ED%8F%89%EC%A0%90')

- 현재 브라우저 창 크기 확인
get_window_size()
: 현재 창의 {가로, 세로} 반환
get_window_position()
: 현재 창의 위치 좌표 {x, y} 반환
get_window_rect()
: size, position의 값 반환
print(driver.get_window_size())
print(driver.get_window_position())
print(driver.get_window_rect())
driver.set_window_size(1052, 805)
driver.maximize_window()
driver.minimize_window()
last_height = driver.execute_script("return document.body.scrollHeight")
- 화면 스크롤 조정
save_screenshot('./test.png')
: 스크린샷
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
driver.execute_script("window.scrollTo(0, 0);")

from selenium.webdriver import ActionChains
some_tag = driver.find_element_by_xpath('''//*[@id="데이터-확보"]''')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()

some_tag = driver.find_element_by_id('''-14''')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()

some_tag = driver.find_element_by_class_name('''sc-cmTdod.nQaRJ''')
some_tag.send_keys('data science selenium test')

- 버튼 클릭 : 댓글 작성이 로그인 되어야 하므로 로그인 창이 생성되었다.
xpath = '''//*[@id="root"]/div[2]/div[8]/div/div[1]/div/button'''
some_tag = driver.find_element_by_xpath(xpath).click()

- Xpath
- // : 최상위 엘리먼트
- * : 자손 태그 검색 => div form (띄워쓰기 = 자손 태그)
- / : 자식 태그 검색 => div > form (꺽쇠 = 자식 태그)
- div[2] : div 태그 중 2번째 태그 선택 => div:nth-chil(2)
- find_elelmet
find_element_by_css_selector
=> find, select_one
find_elements_by_css_selector
=> find_all, select
- 현재 화면 html 코드 읽기
page_source 키워드
: 원하는 내용을 뷰티풀 수프를 활용하여 찾을 수 있다.
iframe
: html 내부에 html을 사용한 것으로 기본적인 select, find로는 찾을 수 없다.
