-
파이썬으로 어벤져스: 엔드게임 용산IMAX 명당 예매 하기 (1)개발/기록 2019. 4. 25. 00:34
*본 글에 앞서, 글에 서술한 관련 기술로 암표 판매 등 어떠한 금전적 이득을 얻지 않았음을 밝힙니다.
0.
어벤져스: 엔드게임이 개봉한 오늘은, 스포일러를 피하려는 전쟁으로 정말 힘들었던 하루가 아닌가 싶습니다.
사실, 어벤져스: 엔드게임을 향한 전쟁은 개봉 전부터 이미 시작되었다고 볼 수 있습니다.
바로, 콘서트, 항공권 할인 이벤트 등에서는 쉽게 볼 수 있는 '티켓팅' 전쟁입니다.
우리나라에는 정말 많은 영화관이 있어서, 영화를 예매하는 데는 큰 어려움이 없지만, 영화예매에서의 사실 몇 번의 티켓팅 전쟁은 존재해 왔습니다.
어벤져스: 인피니트 워, 덩케르크 등의 용산IMAX관 예매의 경우.
바로, CGV 용산아이파크몰의 'IMAX' 관의 존재 때문입니다.
용산아이맥스가 좋은 이유(https://creativesilver.tistory.com/526)
실제로, CGV측에서 예매오픈을 예고한 4월16일에는, '어벤져스 엔드게임 예매'가 네이버 실시간 검색어 순위에 온종일 머물러 있었습니다.
저는, 영화매니아나 마블의 매니아는 아니지만, 기대작들은 용산IMAX에서 보는 것을 선호하기 때문에,
용산IMAX관 명당 티켓팅에 도전했고, 성공했습니다.
언제 예매가 오픈될지 모르는 영화를, 광클과 새로고침 만으로 티켓팅에서 승리하기란 정말 어렵습니다.
이 포스팅에서는, 파이썬을 이용해서 어벤져스: 엔드게임의 용산아이맥스 '초'명당 티켓팅에 성공한 후기와 방법을 소개해드리고자 합니다.
1.
제가 생각한 티켓팅 계획은 다음과 같았습니다.
- CGV 용산아이파크몰 예매시간표를 지속적으로 크롤링하는 코드를 짠다.
- 원하는 날에 어벤져스: 엔드게임 예매가 오픈되면, 텔레그램으로 알림을 준다.
- 아주 여유롭게 예매한다 :)
그러나, 계획은 처음부터 문제가 발생했습니다.
이미 8,000명 이상의 인원이 있는 용산 아이맥스 알리미 텔레그램 채팅방이 존재했기 때문입니다.
하지만, 티켓팅은 초 단위 싸움입니다.
저는, 위 개발자분도 저랑 같은 방식으로 코딩했기에 확신했기 때문에, 해당 알리미보다 더 빠른 간격으로 크롤링한다면, 제가 충분히 승산이 있다는 생각이 들었습니다.
2. 예매시간표 크롤링 코드 짜기
우선, CGV 웹사이트에서 크롬 개발자 도구를 통해, 상영시간표만 보여주는 웹 주소를 알 수 있었습니다.
그리고, 해당 웹 주소서 date 쿼리스트링의 변경을 통해, 원하는 날짜의 상영시간표를 볼 수 있었습니다.
친절하게도 아직 오픈되지 않은 날짜면, 가장 최근 날짜로 redirect 해주기 때문에,
좀 더 쉽게 코드를 짜는게 가능했습니다.저는, 중간고사가 모두 끝난 4월 26일 저녁 영화를 보고 싶었기 때문에,
4월 26일의 상영시간표에 대한 웹페이지를 크롤링 하면, 원하는 정보를 얻을 수가 있었습니다.
파이썬에서 크롤링은, request 모듈과 bs4 모듈로 쉽게 할 수 있습니다.
beautifulsoup4 documentation
https://pypi.org/project/beautifulsoup4/사실, 어벤져스의 예매 오픈 유무만 알기 위해선, 크롤링을 도와주는 bs4 없이도 해당 웹에 request를 지속적으로 날려주면서,
어벤져스의 string 유무를 확인해주면 되었지만, IMAX라는 변수가 있었습니다.CGV에서 IMAX관은 특별한 상영관이기 때문에, 일반관과는 다른 일정으로 예매 오픈을 할 것이라고 생각했습니다.그래서 해당 상영시간표에서,
- 어벤져스: 엔드게임 의 예매오픈 유무
- 해당 날짜의 아이맥스관 예매오픈 유무
를 모두 확인함으로써, 제가 원하는 정보를 얻을수 있었습니다.
어벤져스: 엔드게임이 개봉한 이후에는, 당연히 IMAX관에 엔드게임을 상영할 것이기 때문에,
IMAX관의 영화명까지 체크를 하진 않았습니다.위 조건을 크롤링한 코드는 다음과 같습니다.
1. request모듈을 통해, 해당 웹에 get 요청을해서, html을 받아 옵니다.
2. 해당 html에서 어벤져스의 string 유무를 검사합니다.
3. bs4 모듈로 .info-hall class를 파싱해서, IMAX관의 유무를 검사합니다.
4. 2와 3의 조건을 만족하면, 예매 오픈임을 판단합니다.이 코드를 통해, 저는 4월 26일에 iMAX관 어벤져스:엔드게임의 예매 오픈 유무를 알 수 있었습니다.
파이썬으로 어벤져스: 엔드게임 용산IMAX 명당 예매 하기 (2)
'개발 > 기록' 카테고리의 다른 글
한국어로 실시간 미세먼지를 알려주는 Alexa Skill 개발하기 (完) (1) 2019.05.01 한국어로 실시간 미세먼지를 알려주는 Alexa Skill 개발하기 (1) (0) 2019.05.01 한국어로 실시간 미세먼지를 알려주는 Alexa Skill 개발하기 (0) (0) 2019.05.01 파이썬으로 어벤져스: 엔드게임 용산IMAX 명당 예매 하기 (完) (22) 2019.04.25 파이썬으로 어벤져스: 엔드게임 용산IMAX 명당 예매 하기 (2) (1) 2019.04.25