크롤링하기

알파카파카·2025년 1월 15일

(++++ 추가)
selenium이 업데이트 되어서 chrome driver 다운받을 필요가 없다고 한다.
chrome driver경로 작성하는 부분에서 그냥 공란으로 두자.


Chrome Driver 설치( 업데이트 후 생략 )

처음에 Selenium을 사용하여 크롤링을 하기 위해서는 어떤 브라우저를 사용하느냐에 따라 설치해야 하는 드라이버가 달라지기 때문에 어떤 브라우저에서 사용할지 선택하자

나는 크롬을 사용하기 때문에 ChromeDriver를 설치하겠다.
크롬 드라이버를 검색을 하면 가장 위에 뜨는 developer.chrome.com 웹 페이지가 나오는데 들어가서

버전 선택 - Chrome for Testing (CfT) 가용성 대시보드를 누르면


크롬 드라이버를 다운받을 수 있는 페이지가 나오는데 조금 내려서

안정화 된 버전을 자신의 운영체제에 맞게 선택하여 URL을 입력하면

바로 다운로드가 된다.

압축을 풀어주고 경로를 잘 기억하자
(+본인의 크롬 브라우저 버전이 115이상이라면 조금 더 읽어보고 다운받자.)


이제 코드를 작성해보자

파이썬 코드를 작성할 편집기를 실행해주자
크롤링을 하기 위한 selenium 기본 모듈을 import 해주고 페이지 실행

from selenium import webdriver  # 크롬 드라이버 실행 모듈
from selenium.webdriver.common.keys import By # 페이지 내용을 가지고 올 때 class로 찾을지, id로 찾을지 선택 모듈
from selenium.webdriver.common.keys import Keys    # 키보드를 눌러주는 동작 전달 모듈
from selenium.webdriver.common.action_chains import ActionChains    # 물리적인 조건만 만족하면 해당 위치에서 동작
from selenium.webdriver.support.ui import WebDriverWait     # sleep() 기능 수행 모듈
from selenium.webdriver.support import expected_conditions as ec    # 선택된 요소의 상태 알아보기
from selenium.webdriver.chrome.options import Options   # 크롬 드라이버의 옵션을 정해서 실행

# driver_path = '/path/to/Chomedriver.exe'	# 크롬 드라이버 실행 파일 경로 작성
# driver = webdriver.Chrome(driver_path)	#이제 이건 하지 않는다.
driver = webdriver.Chrome()	# 드라이버 초기화

driver.get('http://www.example.com')	# 웹페이지로 이동

기능

button = driver.find_element_by_id('loadButton')	# 버튼 찾아 클릭
button.click()

이렇게 처음부터 id를 찾는 메서드를 호출하여 id를 찾아서 입력해도 되지만

btn_path = 'XPATH 경로'
button = driver.find_element(By.XPATH, btn_path)
button.click()

이렇게 XPATH로 경로를 설정하여 찾는 것이 나에게 맞는거 같아서 사용

XPATH를 알고 싶으면 개발자 모드에서 element에 있는 HTML 코드에서 마우스 오른쪽 버튼 - Copy - Copy XPath

그러면 XPATH를 쉽게 알 수 있다.

  1. 클릭하기
button = driver.find_element(By.XPATH, btn_path)
button.click()
  1. 입력하기
input_box = driver.find_element(By.XPATH, btn_path)
input_box.click("입력할 내용")
  1. 추출하기
extract = driver.find_element(By.XPATH, data_path).text
  1. 마우스 올리기
element_to_hover = driver.find_element(By.XPATH, hover_path)
actions = ActionChains(driver)
actions.move_to_element(element_to_hover).perform()
  1. 페이지 내리기 ( 키보드의 Page Down 키를 누르는 것과 같음 )
actions = ActionChains(driver)
actions.send_keys(Keys.PAGE_DOWN).perform()
  1. 자바스크립트 콘솔에서 실행
# 클릭하기
driver.execute_script("document.querySelector('#id_name').click()")
driver.execute_script("document.querySelector('#id_name').value="넣을 값"

이렇게 하는 방식이 더 쉽고 빠르다.

profile
타닥,,, 타다닥,,,,,,,

0개의 댓글