[BeautifulSoup&Selenium] 웹사이트 제어하기

박경민·2023년 1월 26일
0

[DataScience]

목록 보기
13/16

01 Selenium

✅ Selenium 이란?
브라우저를 자동화하는 도구. 클릭, 스크롤, 입력 등을 미리 설정해두면 코드에 의해 웹사이트가 자동으로 동작하는 것이다. 웹 사이트 테스트를 위해 사용.

02 Selenium 준비하기

터미널에서 pip3 install selenium 명령으로 셀레니움을 설치한 뒤 다음과 같은 코드를 쳐줬다.

# Selenium 임포트
from selenium import webdriver

# 크롬 드라이버 생성
driver = webdriver.Chrome("C:/Users/82102/Downloads/chromedriver_win32/chromedriver.exe")

# 사이트 접속하기
driver.get('https://codeit.kr')

잘 동작하던 셀레니움이 나중에 버전이 안맞아서 오류가 날 수 있다.

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version XX

크롬과 크롬 드라이버 버전이 안맞는 것인데, 이때는 크롬 드라이버를 크롬 버전에 맞게 다시 설치해야 한다.


03 웹사이트 제어하기

.find_element_by_css_selector : CSS 를 선택하는 것이다. 우리가 예전에 배운 select 처럼 가장 위의 하나만 선택한다.
click() : 클릭동작을 수행해준다.
send_keys() : 안에 무엇을 넣을지 수행해준다.

# Selenium 임포트
from selenium import webdriver

# 크롬 드라이버 생성
driver = webdriver.Chrome("C:/Users/82102/Downloads/chromedriver_win32/chromedriver.exe")
driver.implicitly_wait(3)

# 사이트 접속하기
driver.get('https://workey.codeit.kr/costagram/index')

driver.find_element_by_css_selector('a.top-nav__login-link').click()
driver.find_element_by_css_selector('.login-container__login-input').send_keys('codeit')
driver.find_element_by_css_selector('.login-container__password-input').send_keys('datascience')
driver.find_element_by_css_selector('.login-container__login-button').click()

전체 코드는 다음과 같다. 사이트가 자동으로 열리고, 로그인 기능을 스스로 수행하는 것을 확인할 수 있다.

(사실 너무 신기하다. 이것만 있으면 다 할 수 있을 거 같다.)


05 다양한 find element 메서드

✅ 태그 이름으로 찾기

driver.find_element_by_tag_name('tag_name')

✅ id 로 찾기

driver.find_element_by_id('id-name')

✅ class 로 찾기

driver.find_element_by_class_name('class-name')

✅ 복수 요소 찾기

# CSS 선택자
driver.find_elements_by_css_selector('selector')

# 태그 이름
driver.find_elements_by_tag_name('tag_name')

# class 이름
driver.find_elements_by_class_name('class-name')
참고로 id 값을 사용하는 find_element_by_id() 메소드는 s가 붙는 버전이 

리스트를 리턴


06 Selenium Wait


07 Selenium Explicitly Wait

profile
Mathematics, Algorithm, and IDEA for AI research🦖

0개의 댓글