매크로 개발 포스팅에 앞서,
매크로 개발 자체는 불법은 아닙니다만, 이를 이용한 암표 거래는 불법입니다.
그리고, 이 매크로는 파이썬을 처음 써보는 필자가 만든 것이므로 안될 겁니다.
[Python] 인터파크 티켓팅 기본 매크로 개발 - 1 (브라우저열기)
[Python] 인터파크 티켓팅 기본 매크로 개발 - 2 (로그인하기)
로그인까지 자동으로 쉭쉭 됐다면, 로그인 이후에 좀더 빠른 예매화면 진입을 위해인터파크 티켓이 아닌 티켓팅을 하려는 예매 페이지로 이동을 해야함. 티켓팅을 무조건 빨라야 하니까!
로그인 하기에서 아래 코드에서 끝이 났음.
login_btn = driver.find_element(By.XPATH, "//*[@id='login']/div[3]/button")
login_btn.click()
1. 예매 하려는 공연 상품 번호 확인.
로그인 이후 진입할 예매 페이지 설정을 위해서는 예매 하려는 티켓의 상품 번호가 필요함.
인터파크 티켓의 예매페이지에 들어가보면, 주소창에 '.../goods/숫자숫자숫자' 가 있는 것을 볼 수 있음.
저 숫자가 해당 공연의 상품번호임.
아래 예시인 지킬앤하이드의 상품번호는 '24013928' 라는 것을 알 수 있음.

2. 공연 예매 페이지로 이동
로그인 이후 '지킬앤하이드' 예매페이지로 이동은 매크로 실행 시 인터파크 티켓 로그인 브라우저를 열었던 코드와 동일 하게 사용하면 됨.
driver에 url을 입력하고 driver.get을 이용하여 페이지 로드 시킴
time.sleep(0.2)
ticket_url = 'https://tickets.interpark.com/goods/24013928'
driver.get(url=ticket_url)
로그인 이후 time.sleep으로 일정 시간 동작에 sleep을 설정함.
이렇게 되면, 로그인 버튼 클릭 이후, time내 설정 된 시간이 지난 이후 상품 번호가 입력 된 예매 페이지로 자동 이동.
공연 예매 페이지 별로 아래 사진과 같이 예매 안내 팝업이 뜨는 경우가 있음.
팝업이 생성 되면 본 화면에 있는 예매하기 버튼에 접근이 안되니 일단 팝업을 제거해야함.

팝업을 찾아서 '닫기' 를 클릭하는건 어렵지 않지만,
예매안내 팝업이 없는 공연도 있기 때문에 팝업이 없는 공연에서는 해당 조건을 못찾아서 에러가 발생할 수 있음.
그래서 예외 처리를 해야함.
이거 때문에 고생을 했.....
팝업 예외 처리를 하지 않을 때는 driver로 해당 팝업의 element를 찾아서 닫기 클릭을 2줄이면 끝남.
하지만, 팝업이 없는 공연도 있다는거!
1) 예외 처리 없는 팝업 닫기
popup_btn = driver.find_element(By.XPATH, "//*[@id='popup-prdGuide']/div/div[3]/button")
popup_btn.click()
2) 예외 처리 팝업닫기
try:
popup_btn = driver.find_element(By.XPATH, "//*[@id='popup-prdGuide']/div/div[3]/button")
popup_btn.click()
except Exception as e:
print("No popup", e)
예외 처리 하는것도 어렵진 않지만, 필자는 왜 에러가 나는지 원인을 못찾아서 고생했다는거.....
요래 해두면 팝업이 없어도 다음으로 슁슁 진행이 가능함.
여기까지 진행해서 예매 안내 팝업이 닫히는 것 까지 확인이 됐다면 이제 본격적으로 예매창을 띄워서 티켓팅을 해야함.
티켓팅 매크로 개발에 대해 구글링을 해 보면 날짜 선택에 대해서 예매창을 띄우고 하는 방법과, 예매페이지 내에서 날짜를 선택하고 예매창을 띄우는 방법이 있을건데 그건 각자 취향대로.
필자는 예매창을 띄우고 날짜와 회차를 선택하는 방법으로 진행함.
3. 예매창 띄우기

개발자 도구를 이용하여 예매하기 버튼의 구성을 확인 해보면 위와 같이 되어 있음을 알 수 있음.
driver.find_element에서 element를 찾는 방법은 XPATH, ID, CSS_SELECTOR, TAG_NAME, CLASS_NAME, NAME 등 여러 방법이 있음.
어떤 방법을 사용하든 element를 찾는 건 각자 편한 방법을 이용하면 됨.
go_button = driver.find_element(By.CSS_SELECTOR, 'a.sideBtn.is-primary')
go_button.click()
예매하기 버튼의 element를 찾아서 click까지 실행 되면 예매팝업이 눈앞에 나타남.
예매창이 떴으니 두근거리는 마음으로 날짜와 회차 선택은 다음에....
'개발 > Python' 카테고리의 다른 글
| [Python] 인터파크 티켓팅 기본 매크로 개발 - 5 (좌석 선택) (0) | 2025.01.16 |
|---|---|
| [Python] 인터파크 티켓팅 기본 매크로 개발 - 4 (날짜 및 회차 선택) (1) | 2025.01.15 |
| [Python] 인터파크 티켓팅 기본 매크로 개발 - 2 (로그인하기) (0) | 2025.01.10 |
| [Python] 파이썬 설치 (0) | 2025.01.09 |