본문 바로가기

Study/데이터 크롤링

Selenium 기본 알기

 

 

https://www.selenium.dev/

 

Selenium

Selenium automates browsers. That's it!

www.selenium.dev

Selenium은 동적 브라우저를 크롤링할 수 있도록 하는 기술이다.

#드라이버 로드 테스트
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys
import time

#드라이버 생성 및 경로 설정
chromedriver = '설치경로'
driver = webdriver.Chrome(chromedriver)

#크롤링할 사이트
driver.get("URL")
drivr.quit()

이렇게 호출한 후 셀레니움을 통해 몇 가지 테스트를 진행할 수 있다.

예를 들어, title을 활용하면, 해당 사이트의 제목을 추출할 수 있다.

print(driver.title) #head의 title 태그를 의미한다
print(driver.current_url)
assert "제목" in driver.title #assert 는 해당 문자열이 없으면 에러를 내고 종료한다는 것을 의미

크롤링 시 사용하는 주요 함수는 다음과 같은데, element일 경우 하나의 값을, elements일 경우 매칭되는 모든 결과값을 가져와준다. 

find_element_by_name: 속성값으로 매칭
find_element_by_tag_name(): 태그를 가져옴(리스트 형태)
find_element_by_class_name(): 클래스 값으로 매칭
find_element_by_id(): id 값으로 매칭
find_element_by_css_selector(): CSS selector로 태그 가져옴

 

셀레니움 상위 버전의 경우, 다음과 같이 작성해야 한다.

from selenium.webdriver.common.by import By

elem = driver.find_element(By.NAME,'h1')
print(elem.text)

 

웹 사이트를 자동으로 클릭할 수도 있다. 

email = driver.find_element(By.NAME, 'EMAIL')
# input 텍스트 초기화
email.clear()
#값 작성 및 엔터
email.send_keys('id@tistory.com')
email.send_keys(Keys.RETURN)

만약 검색을 하는 창이 상단이 아니라 하단에 있다면, 어떻게 해야할까? 우리가 마우스 스크롤을 하는 것처럼, 스크롤을 해주어야 한다. 

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

window.scrollTo(0, Y)로 설정한 후, Y에 높이를 입력해주면 스크롤이 가능하다. 끝까지 스크롤을 내리고 싶다면, scrollHeight를 써주면 된다. 

 

driver.set_window_size(가로, 세로) #화면 사이즈 변경

#스크린샷  
elem = driver.find_element_by_tag_name("body")
elem.screenshot(파일이름)
elem.get_attribute('text') #text 값 화면에 보여주기

** 꼭 driver.quit() 명시 **

'Study > 데이터 크롤링' 카테고리의 다른 글

HTML 분석  (2) 2022.08.03
Headless Chrome  (2) 2022.08.02
파이썬 크롤링에 필요한 기본 개념들  (0) 2022.08.01