[Zero-Base DS]스터디노트_웹데이터 분석(04)

HAHAHAEUN·2024년 4월 10일
post-thumbnail

주요 학습내용

셀레니움(Selenium)

1. 'Selenium'이란

2. Selenium 기초

I. Selenium

  • Beautiful Soup만으로 해결할 수 없는 것
    • 접근할 웹 주소를 알 수 없을 때
    • 자바스크립트를 사용하는 웹페이지의 경우
    • 웹 브라우저로 접근하지 않으면 안될 때
  • Selenium
    • 웹 브라우저를 원격 조작하는 도구
    • 자동으로 URL을 열고 클릭 등이 가능
    • 스크롤, 문자의 입력, 화면 캡처 등등

1. 설치하기

  • Selenium 사용하기 위해 설치 필요한 것

    • Python 모듈
    • Chrome 드라이버(더보기 → 도움말 → 정보 → 버전 확인)
  • 해당 버전 크롬 드라이브 설치

  • 설치 확인

from selenium import webdriver

options.page_load_strategy = 'normal'
driver = webdriver.Chrome(options=options)
driver.get("https://www.naver.com")
  • 실행 후 네이버 창이 자동으로 켜지면 잘 설치된 것
  • 초반에 계속 오류가 떠서 selenium도 update하고 다 해봤지만 계속 오류가 떴다.
  • 강의에서 알려준 내용은 훨씬 더 간단했지만, 계속 오류가 났기에... 공식 documentation을 참고하여 option객체를 사용하여 설치했다
  • 실행된 창 꺼주기
driver.quit()
  • 꺼주지 않으면, 계속 크롬 창이 새로 생성될수 있으니, 실행 후 꺼주는 것이 좋음

II. Selenium 기초

1. import webdriver

from selenium import webdriver
options.page_load_strategy = 'normal'
driver = webdriver.Chrome(options=options)

2. 열고자하는 페이지 입력

driver.get("https://pinkwink.kr/")

3. 화면 크기 설정

  • 최대
driver.maximize_window()
  • 최소
driver.minimize_window()
  • 맞춤(원하는 크기 입력)
driver.set_window_size(600, 800)

4. 화면 새로고침/뒤로가기/앞으로 가기

  • 새로고침
driver.refresh()
  • 뒤로가기
driver.back()
  • 앞으로 가기
driver.forward()

5. 클릭

  • 개발자도구 클릭 → 위치 찾기(우클릭 후 copy select)
  • copy값 넣어주기
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)')
first_content.click()

6. 탭 생성/이동/닫기(자바스크립트 문법)

  • 생성(자바스크립트 문법)
driver.execute_script('window.open("")')
driver.execute_script('window.open("https://www.naver.com")')
  • 이동([인덱스값 입력 0~)]
    driver.switch_to.window(driver.window_handles[1])
 - 닫기(열려있는 탭 하나 닫음)
 ```javascript
driver.close()

7. 화면 스크롤

  • '현재'화면에서 데이터가 보이지 않으면, 해당 데이터는 가져올 수 없음
  • 따라서 스크롤기능 사용 필요

1) 스크롤 가능한 높이 확인

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

2) 최하단 이동

driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')

3) 최상단 이동

driver.execute_script('window,scrollTo(0, 0);')

4) 특정 태그 지점까지 스크롤 이동

  • 태그 위치 copy select
  • copy값 넣어줌
from selenium.webdriver import ActionChains

some_tag = driver.find_element(By.CSS_SELECTOR, '#content > div.cover-thumbnail-list > div > h2')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()

ActionChains

  • ActionChains는 마우스 이동, 마우스 버튼 동작, 키 누르기 및 컨텍스트 메뉴 상호작용과 같은 낮은 수준의 상호작용을 자동화하는 방법
  • 호버 및 드래그 앤 드롭과 같은 보다 복잡한 작업을 수행하는 데 유용

8. 화면 스크린샷 저장

# ./ : 현재위치
driver.save_screenshot('./last_height.png')

참고자료 :

[자료 출처] 제로베이스 데이터 스쿨

profile
할 거면 제대로 하자

0개의 댓글