Selenium 기초

이상해씨·2021년 10월 4일
0

EDA, 웹크롤링

목록 보기
9/13

◾Selenium

  • Selenium
    • 웹 브라우저를 원격 조작하는 도구
    • 자동으로 URL을 열고 클릭 등이 가능
    • 스크롤, 문자 입력, 화면 캡처 등등
    • 설치 : 파이썬 모듈 + 크롬 드라이버
  • Beautiful Soup으로 해결할 수 없을 때 사용
    • 접근한 웹 주소를 알 수 없을 때
    • 자바스크립트를 사용하는 웹페이지의 경우(동적 페이지)
    • 웹 브라우저로 접근하지 않으면 안될 때
from selenium import webdriver
# 크롬 드라이버 경로 지정
driver = webdriver.Chrome('../driver/chromedriver.exe')
# get 명령으로 접근하고 싶은 주소 지정
driver.get('https://www.naver.com')
# 종료 필수
driver.quit()

◾Selenium 기초

  • 동작
    • 크롬 드라이버 경로 지정
    • get 명령으로 접근하고 싶은 주소 지정
    • quit 명령으로 종료
# 크롬 드라이버 경로 지정
driver = webdriver.Chrome('../driver/chromedriver.exe')
# get 명령으로 접근하고 싶은 주소 지정
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);")

  • 화면 페이지 지정 : xpath
# xpath로 이동
from selenium.webdriver import ActionChains

some_tag = driver.find_element_by_xpath('''//*[@id="데이터-확보"]''')
# Beautiful Soup select와 동일하게 사용가능
# some_tag = driver.find_element_by_css_selector('#데이터-확보')

action = ActionChains(driver)
action.move_to_element(some_tag).perform()

  • 화면 페이지 지정 : id
# id로 찾기
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''')
# 키 전송
# 입력값은 뒤에 추가로 입력된다.
# clear() 명령 : 입력값 초기화
some_tag.send_keys('data science selenium test')

  • 버튼 클릭 : 댓글 작성이 로그인 되어야 하므로 로그인 창이 생성되었다.
# 버튼 id, class, xpath 등 확인
xpath = '''//*[@id="root"]/div[2]/div[8]/div/div[1]/div/button'''
# css = '#root > div:nth-child(2) > div:nth-child(8) > div > div:nth-chilt(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로는 찾을 수 없다.
profile
후라이드 치킨

0개의 댓글