웹 스크래핑(Web scraping)
Selenium - 마우스 이벤트 처리하기
터칭 데이터
2023. 10. 26. 17:07
In [1]:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
3-4. 마우스 이벤트 처리하기¶
- Selenium을 이용해서 마우스 Event를 동작해봅시다.
Target: 해시코드 "로그인" 창 접속하기¶
이번 실습과 다음 실습에 걸쳐 로그인 과정을 자동화하는 것을 목표로 합니다.
다음 사이트에 로그인하기 위해 "로그인" 버튼을 눌러봅시다 : https://hashcode.co.kr/
Mouse Event¶
웹 페이지에서 일어나는 일들을 Event라고 합니다.
마우스로 일어날 수 있는 대표적인 이벤트는 다음과 같습니다.
- 마우스 움직이기(move)
- 마우스 누르기(press down)
- 마우스 떼기(press up)
- ...
저희는 버튼을 찾은 후 이를 클릭하는 것을 목표로 합니다.
마우스 입력은 크게 다음과 같은 과정을 거칩니다.
- 입력하고자 하는 대상 요소를 찾습니다. (
find_element()
이용) - 입력하고자 하는 내용을
click
을 통해 전달합니다. .perform()
을 통해 동작합니다.
아래 예시는 id
가 textInput인 요소에 "abc"를 입력하는 예제입니다.
button = driver.find_element(By.ID, "button")
ActionChains(driver).click(button).perform()
In [2]:
# 스크래핑에 필요한 라이브러리를 불러와봅시다.
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
In [28]:
# 주어진 웹사이트를 누른 후, 우리가 원하는 버튼 요소를 찾은 후 마우스 이벤트를 실행시켜봅시다.
# '//*[@id="main-app-header"]/header/section/div/div/div/a[1]'
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window() # 없으면 창 크기가 작아서 Element not interactable: element has zero size 에러가 난다.
driver.get("https://hashcode.co.kr/")
driver.implicitly_wait(3)
button = driver.find_element(By.XPATH, '//*[@id="main-app-header"]/header/section/div/div/div/a[1]')
ActionChains(driver).click(button).perform()
성공적으로 로그인 창에 진입했나요?
이제 다음 실습에서 키보드 입력을 진행하는 방법에 대해서 학습해봅시다.
Tip: 이 외에도 사용할 수 있는 마우스 이벤트들이 많습니다. 다음 링크를 통해 확인하실 수 있어요!