예전에 파파이스를 자주 먹었던 기억이 있는데 최근에 동네에 파파이스 매장이 새로 생긴걸 알게되었습니다!!
파파이스 영수증도 보니 버거킹, KFC 처럼 메뉴 업그레이드 설문조사가 있는걸 확인하고 Selenium으로 자동화를 구현해 보았습니다.
파파이스는 다른 브랜드와 다르게 코드 입력없이 QR 코드를 찍고 바로 설문조사를 할 수 있는 방식이었습니다.
아마 매장별로 QR 코드가 있는듯 하여 자주가는 매장에 QR 코드 URL을 뽑아서 한번 설정하면 계속 사용할 수 있지 않을까 생각됩니다.
(만약 이게 아니면 효율성이 떨어져서 자동화 공부만 한 셈이 되겠네요 ㅠㅠ)
파파이스 설문 조사에서는 3가지 화면으로 구분하여 구현하였습니다.
3가지 화면 모두 화면이 넘어가는 시간이 필요하다고 생각하여 3초 sleep 코드를 추가하였습니다.
1번째 화면은 제일 많이 보이는 1가지 선택 설문입니다.
해당 화면은 버튼 별로 ID값이 있었기 때문에 편하게 find_element > ID 값 방법으로 처리하였습니다.
# 1번째 화면
driver.find_element(By.ID, 'QID19-1-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
2번째 화면은 라디오 버튼으로 되어있는 설문입니다.
라디오 버튼에도 ID값이 있었는데 해당 버튼은 ID값이 있어도 ID값을 찾을 수 없는 에러가 발생하였습니다.
(혹시 이유를 알고 계신분이 있다면 댓글로 조언 부탁드립니다.)
따라서 라디오 버튼이 있는 설문조사 화면은 find_elements > class_name[숫자] 방법으로 변경하여 구현하였습니다.
# 2번째 화면
driver.find_elements(By.CLASS_NAME, 'c4')[1].click()
driver.find_elements(By.CLASS_NAME, 'c4')[2].click()
driver.find_elements(By.CLASS_NAME, 'c4')[3].click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
3번째 화면은 서술형 입력 설문입니다.
해당 음식이 대한 평가 항목이기 때문에 맛있다는 글자를 send_keys를 사용하여 처리하였습니다.
# 7번째 화면
driver.find_element(By.ID, 'QR~QID47').send_keys('아주 맛있었어요')
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
설문조사가 완료되면 코드 출력 화면이 나오는데 해당 코드는 ID나 class_name값이 없었기 때문에
상위 ID값 + find_elements > TAG_NAME 조합으로 처리하였습니다.
# 발급된 코드 출력
print(driver.find_element(By.ID, 'EndOfSurvey').find_elements(By.TAG_NAME, 'strong')[0].text)
전체 코드입니다. 해당 코드로 편안하게 코드를 결과값으로 받아볼 수 있습니다.
현재까지 강남, 구로디지털점 2곳이 새로 들어온걸로 보이는데 더 많이 파파이스 매장이 들어오기를 희망합니다!
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get('QR코드 URL 입력란')
time.sleep(5)
# 시작 화면
driver.find_element(By.ID, 'NextButton').click()
time.sleep(5)
# 1번째 화면
driver.find_element(By.ID, 'QID19-1-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 2번째 화면
driver.find_elements(By.CLASS_NAME, 'c4')[1].click()
driver.find_elements(By.CLASS_NAME, 'c4')[2].click()
driver.find_elements(By.CLASS_NAME, 'c4')[3].click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 3번째 화면
driver.find_elements(By.CLASS_NAME, 'c4')[1].click()
driver.find_elements(By.CLASS_NAME, 'c4')[2].click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 4번째 화면
driver.find_element(By.ID, 'QID94-1-label').click()
driver.find_element(By.ID, 'QID31-2-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 5번째 화면
driver.find_element(By.ID, 'QID40-2-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 6번째 화면
driver.find_element(By.ID, 'QID95-1-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 7번째 화면
driver.find_element(By.ID, 'QR~QID47').send_keys('아주 맛있었어요')
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 8번째 화면
driver.find_element(By.ID, 'QID48-3-label').click()
driver.find_element(By.ID, 'QID48-6-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 9번째 화면
driver.find_element(By.ID, 'QID99-5-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 10번째 화면
driver.find_element(By.ID, 'QID104-24-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 11번째 화면
driver.find_element(By.ID, 'QID52-1-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 12번째 화면
driver.find_elements(By.CLASS_NAME, 'c4')[1].click()
driver.find_elements(By.CLASS_NAME, 'c4')[2].click()
driver.find_elements(By.CLASS_NAME, 'c4')[3].click()
driver.find_elements(By.CLASS_NAME, 'c4')[4].click()
driver.find_elements(By.CLASS_NAME, 'c4')[5].click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 13번째 화면
driver.find_element(By.ID, 'QID62-1-label').click()
driver.find_element(By.ID, 'NextButton').click()
time.sleep(3)
# 발급된 코드 출력
print(driver.find_element(By.ID, 'EndOfSurvey').find_elements(By.TAG_NAME, 'strong')[0].text)
driver.close()
'자동화 > Selenium' 카테고리의 다른 글
주요 서점 주간 베스트 20위까지 데이터 엑셀에 자동화로 저장하기 (0) | 2023.01.29 |
---|---|
버거킹 설문조사 exe 실행파일로 자동화 사용하기 (0) | 2023.01.14 |
아파트 경매 목록 자동화로 추출하여 엑셀에 저장하기 (0) | 2023.01.06 |
설날 연휴 KTX 좌석 남아있는거 자동화로 확인하기 (0) | 2022.12.26 |
네이버부동산 특정날짜 주요뉴스 목록 추출하기 (0) | 2022.12.20 |