※ 심심해서 해보는 RPA관련 Toy_Project
최근들어 인간의 성격유형을 정리해놓은 MBTI에 관심이 생겨 관련 성격유형들에 대한 내용들을 읽다가 테스트 문항들의 조합에 따른 MBTI 결과가 어떻게 나오는지 궁금해졌습니다. 정식 MBTI는 돈을 내야하기도 하고, 그 과정 자체가 웹페이지로 구현되어 있지 않을 것 같아 MBTI라고 하기는 그렇지만 그와 비슷하며 접근성이 높은 16Personality를 대상으로 진행해보기로 했습니다.
※ Selenium 관련 사이트
RPA를 위해 Python과 VSCODE설치한 후 확장프로그램으로 jupyter notebook을 설치하였고, pip 툴을 이용하여 Selenium 라이브러리를 설치하였습니다.(anaconda와 같은 다른 것들도 많이 설치되어있으나, 핵심은 Selenium이기에 해당부분만 설명할 예정입니다.)우선적으로 Selenium을 사용하기 위해서는 Chrome버전의 확인 밎 그에 맞는 exe파일 다운로드가 필요하여 버전확인 및 관련 홈페이지를 이용하여 exe파일을 다운로드 후 진행하였습니다.
위의 과정을 통해 exe파일을 다운로드 받은 후에는 VS Code에 jupyter notebook파일을 생성하여 코드를 작성하였으며, 세부 코드는 아래와 같습니다.
# 필요 패키지 로드
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
# Chrome 실행 후 16 Personality 홈페이지 접속
driver = webdriver.Chrome('C:\\Workspace\\python\\Toy_Project\\Toy_Project_2022\\chrome\\chromedriver.exe')
URL = "https://www.16personalities.com/ko"
driver.get(URL)
time.sleep(2) # 로딩시간에 맞게 적정히 수정
driver.find_element(By.XPATH, '//*[@id="main-app"]/main/div[1]/div[2]/a').click()
time.sleep(2) # 로딩시간에 맞게 적정히 수정
## 모든 응답문항 체크 홈페이지 구조 동일(페이지당 문항 6개) // 총 10개 페이지
for i in range(10):
driver.find_element(By.XPATH, '//*[@id="main-app"]/div[1]/div/div[2]/div[1]/div[2]/div[2]/div[1]').click()
time.sleep(1) # 로딩시간에 맞게 적정히 수정
driver.find_element(By.XPATH, '//*[@id="main-app"]/div[1]/div/div[2]/div[2]/div[2]/div[2]/div[1]').click()
time.sleep(1) # 로딩시간에 맞게 적정히 수정
driver.find_element(By.XPATH, '//*[@id="main-app"]/div[1]/div/div[2]/div[3]/div[2]/div[2]/div[1]').click()
time.sleep(1) # 로딩시간에 맞게 적정히 수정
driver.find_element(By.XPATH, '//*[@id="main-app"]/div[1]/div/div[2]/div[4]/div[2]/div[2]/div[1]').click()
time.sleep(1) # 로딩시간에 맞게 적정히 수정
driver.find_element(By.XPATH, '//*[@id="main-app"]/div[1]/div/div[2]/div[5]/div[2]/div[2]/div[1]').click()
time.sleep(1) # 로딩시간에 맞게 적정히 수정
driver.find_element(By.XPATH, '//*[@id="main-app"]/div[1]/div/div[2]/div[6]/div[2]/div[2]/div[1]').click()
time.sleep(1) # 로딩시간에 맞게 적정히 수정
driver.find_element(By.XPATH, '//*[@id="main-app"]/div[1]/div/div[3]/button').click()
time.sleep(2) # 로딩시간에 맞게 적정히 수정
16 Personality 홈페이지 자체가 문항을 체크하는 페이지들이 모두 동일한 HTML 구조를 취하고 있어 매우 간단하게 확인이 가능하였으며, 자동화를 위해서 HTML코드중 원하는 부분의 XPATH를 복사하여 사용하였으며 그 방법은 아래와 같습니다.
해당 방식으로 HTML소스를 복사한 후 작성한 코드를 통해 결과를 실행한 결과는 아래와 같습니다.
P.S 더 나은 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.
세부코드가 궁금하신 분들은 아래 GitHub를 참고해주시기 바랍니다.
※ Github
※ [MBTI_16Personality] RPA로 경우의 수 확인하기(2)
'IT & 데이터 사이언스 > 개인 프로젝트' 카테고리의 다른 글
[프로젝트] Django로 포트폴리오 사이트 만들기(3) - 운영 서버 환경 설정 및 사이트 배포하기 (0) | 2024.07.11 |
---|---|
[프로젝트] Django로 포트폴리오 사이트 만들기(2) - Django 프로젝트 생성 및 Bootstrap 적용하기 (2) | 2024.07.05 |
[프로젝트] Django로 포트폴리오 사이트 만들기(1) - Ubuntu Server 환경설정 및 가상환경 만들기 (0) | 2024.07.02 |
[프로젝트] RPA로 MBTI_16Personality 경우의 수 확인하기(2) (0) | 2022.05.20 |
댓글