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 |