티스토리 뷰


심심풀이로 쓴 글이 벌써 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부에서 이어집니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함