Selenium을 사용하는 이유
1. 자바스크립트 실행 : 자바스크립트로 동적으로 데이터를 로드하는 웹페이지 크롤링 가능.
2. 사용자 상호작용 자동화 : 마우스 클릭, 키보드 입력 등 사용자 상호작용 자동화 가능.
3. 브라우저 시뮬레이션 : 봇 탐지 우회를 위해 브라우저 화면 시뮬레이션 가능.
4. 다양한 브라우저 지원 : 여러 브라우저에서 크롤링 테스트 및 실행 가능.
5. 캡차 우회 : 자동으로 캡차를 우회하거나 해결할 수 있음.
Selenium을 사용할려면 라이브러리를 추가하는것은 물론이지만 드라이버를 다운로드 받아야하는데 저와 같은경우 크롬 버전이 너무 최신이라 드라이버 다운로드 링크에 아직 올라가 있지 않아 아래 링크의 방법으로 해결하였습니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome('driver/chromedriver.exe')
driver.get('https:/pinkwink.kr/')
# 창 닫기
driver.quit()
# 화면 최대 크기 설정
driver.maximize_window()
# 화면 최소 크기 설정
driver.minimize_window()
# 화면 크기 설정
driver.set_window_size(600, 600)
# 새로고침
driver.refresh()
# 뒤로가기
driver.back()
# 앞으로가기
driver.forward()
# 클릭
first_content = driver.find_element(By.CSS_SELECTOR, '#content > div.cover-masonry > div > ul > li:nth-child(1)')
first_content.click()
first_content = driver.find_element(By.CSS_SELECTOR, '#content > div.cover-masonry > div > ul > li:nth-child(1)')
first_content.click()
# 새로운 탭 생성
driver.execute_script('window.open("http://naver.com")')
# 탭 이동
driver.switch_to.window(driver.window_handles[2])
다운받은 드라이버를 webdriver에 웹페이지를 크롤링할 준비를 하고 다양한 예제를 시도하였습니다.
ActionChains는 Selenium에서 제공하는 클래스로, 웹 페이지에서 다양한 동작을 수행하는데 사용됩니다. 이 클래스는 여러 동작을 연결하여 실행할 수 있으며, 특히 마우스 및 키보드와 같은 상호작용을 시뮬레이트하는 데 유용합니다. 주로 드래그 앤 드롭, 클릭, 키패드 입력 등을 처리하는 데 활용됩니다.
2. 화면 스크롤
# 스크롤 가능한 높이 길이
# 자바스크립트 코드 실
driver.execute_script('return document.body.scrollHeight')
9064
# 화면 스크롤 하단 이동
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
# 현재 보이는 화면 스크린샷 저장
driver.save_screenshot('./last_height.png')
True
# 화면 스크롤 하단 이동
driver.execute_script('window.scrollTo(0, 0);')
# 특정 태그 지점까지 스크롤 이동
from selenium.webdriver import ActionChains
some_tag = driver.find_element(By.CSS_SELECTOR,'#content > div.cover-list > div > ul > li:nth-child(1)')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()
테스트를 먼저 진행하여 오늘은 진도를 많이 나가지 못했다 내일은 학습과제를 끝내고 나머지 부분은 금요일까지 끝낼수있도록 해보자. 테스트 코드 리뷰는 주말에...