티스토리 뷰
심심풀이로 쓴 글이 벌써 5부네요.
데이터가 리스트를 어떻게 구성하는지 한번 추론해봅시다.
리스트에 보여지는 내용과 데이터를 매칭 해보았습니다.
데이터를 있는 그대로 사용해서 크게 고민할 것도 없었습니다.
예매 가능성만 빼구요.
Ctrl + Shift + C를 누르면
화면에 표시된 부분에 해당하는 HTML 코드를 찾아줍니다.
<td class="bookingPossibilityData"> ... </td>
뭔가 딱 봐도 예매 가능성처럼 생긴 부분이네요
뭔가 우리가 가진 데이터를 가지고
저 부분을 수정하는 스크립트가 있을 것 같은 느낌이 강하게 드는군요.
리스트가 없는 빈 틀이었던
HTML 파일에 검색해보니 이런 스크립트가 있네요
데이터의 저 두 숫자를 이용하는 간단한 코드네요.
GP_OrgSeatCount 중 GP_SeatCount 의 비율로 High, Medium, Low를 판단하나봅니다.
8% 이하이면 Medium
3% 이하이면 Low인가 봅니다.
무려 10%에 육박하니 예매가능성은 High 입니다!!!
아마 전체 좌석 수(GP_OrgSeatCount) 중 예매 가능 좌석수(GP_SeatCount)의 비율이 아닐까 생각합니다.
경기에 대한 정보는 충분하지만
애시당초 알고 싶었던 일반석에 대한 예매 가능성은 파악할 수 없네요
상세 정보를 보려면 위에 영역을 클릭해야 합니다.
클릭하면 호출되는 스크립트 함수가 있네요.
onclick="getSessionDetail('CUR01');"
이 함수가 무슨 함수인지 HTML 코드에서 또 한번 찾아보죠
SC라는 변수에 Code(ex. CUR01) 값을 채워서
POST 방식으로
/Session/Info에
HTTP 요청을 하는 것 같네요.
import requests
def get_session_detail(code):
url = "https://tickets.pyeongchang2018.com/Session/Info";
payload = {
"SC": code
}
req = requests.post(url, json=payload)
return req.text
import codecs
def save_file(filename, content):
file = codecs.open(filename, "w", encoding="utf-8")
file.write(content)
file.close()
res = get_session_detail("CUR01");
save_file("session_info.html", res);
비슷하게 저도 함수 형태로 만들어 보았습니다.
요청에 대한 응답을 HTML 파일로 저장해 보았습니다.
뭔가 익숙한 현상이 보이네요.
틀만 만들어져 있고, 데이터는 비어있는 형태네요.
이번에는 데이터가 어디 있을지 알 것 같네요.
정상적으로 리스트를 클릭해서
상세정보 페이지로 들어가서 XHR을 뒤져봤습니다!!
데이터를 받아오는 것이 보이네요.
이 데이터에 대한 상세한 분석은!
6부에서 이어집니다.
'Python' 카테고리의 다른 글
평창 동계 올림픽 입장권 찾기 7부 (5) | 2018.02.07 |
---|---|
평창 동계 올림픽 입장권 찾기 6부 (0) | 2018.02.04 |
평창 동계 올림픽 입장권 찾기 4부 (0) | 2018.02.02 |
평창 동계 올림픽 입장권 찾기 3부 (0) | 2018.02.01 |
평창 동계 올림픽 입장권 찾기 2부 (2) | 2018.01.31 |
- Total
- Today
- Yesterday
- player
- Class
- ContentResolver
- 추상화
- Android
- OOP
- Linux
- Object Oriented Programming
- Polymorphism
- Encapsulation
- abstraction
- 입장권
- 캡슐화
- readme.md
- markdown
- 클래스
- 마크다운
- 다형성
- 평창
- 올림픽
- media
- Video
- ubuntu
- 동계
- 파이선
- 우분투
- Multimedia
- 객체지향
- 리눅스
- 크롤링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |