30_EDA(7)

ryu·2023년 6월 21일
0

Beautiful Soup 만으로 해결할 수 없는 것

  • 접근할 웹 주소를 알 수 없을 때
  • javascript를 사용하는 웹 페이지의 경우
  • 웹 브라우저로 접근하지 않으면 안될 때

Selenium

  • 웹 브라우저를 원격조작하는 도구
  • 자동으로 url을 열고 클릭 등이 가능
  • 스크롤, 문자입력, 화면 캡쳐 등등

Selenium 기초

  • 드라이버 실행하기

    from selenium import webdriver
    
    driver = webdriver.Chrome('./chromedriver')
    driver.get('https://www.naver.com/')

기능

# 화명 최대 크기 설정
driver.maximize_window()

# 화면 최소 크기 설정
driver.minimize_window()

# 화면 크기 설정
driver.set_window_size(600, 600)

# 새로 고침
driver.refresh()

# 앞으로 가기
driver.forward()

# 뒤로 가기
driver.back()

# 클릭
from selenium.webdriver.common.by import By

first_content = driver.find_element(By.CSS_SELECTOR, "#content > div.cover-masonry > div > ul > li:nth-child(1) > a > span.title")
first_content.click()

# 새로운 탭 생성
driver.execute_script('window.open("https://www.naver.com")')

# 탭 이동
driver.switch_to.window(driver.window_handles[1])

# (현재) 탭 닫기
driver.close()

# driver.quit()은 전체를 닫음

# 스크롤 가능한 높이(길이)
# 자바스크립트 코드 실행

driver.execute_script('return document.body.scrollHeight')

# 화면 스크롤 하단으로 이동
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')

# 현재 보이는 화면의 스크린샷 저장
driver.save_screenshot('./last-height.png')

# 화면 스크롤 상단 이동
driver.execute_script('window.scrollTo(0, 0);')

# 특정 태그 지점까지 스크롤 이동
from selenium.webdriver import ActionChains

some_tag = driver.find_element(By.CSS_SELECTOR, '#widgetboard > div.RightSecond-module__tool_area___KOtcI > div.RightSecond-module__tool_content___rysfx > div:nth-child(1) > a > div > span.RightSecond-module__link_info_title___Z_U01')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()

0개의 댓글