본문 바로가기

JSP

JSON (3) - 박스오피스 데이터 가져오기[영화진흥위원회 오픈API]

https://kobis.or.kr/kobisopenapi/homepg/main/main.do

 

영화진흥위원회 오픈API

OPEN API 서비스 영화진흥위원회 영화관입장권통합전산망에서 제공하는 오픈API 서비스로 더욱 풍요롭고 편안한 영화 서비스를 즐겨보세요.

kobis.or.kr

▷ 영화진흥위원회(이하 영진위)의 오픈 API를 사용하여 데이터 가져오기!

영진위 OPEN API 사용하기!

    1. https://kobis.or.kr/kobisopenapi/homepg/main/main.do로 접속하기(영진위 OPEN API 홈페이지)

    2. 회원가입

    3. 키발급/관리

    4. 키발급받기

    5. 사용목적 : 학습용 / 관리명 : 개인 / 사용 URL : 내 IP 주소

       (ip 주소는 cmd(명령 프롬프트) 창에서 ipconfig 치면 나옵니다^^)

    6. 제공 서비스에 가면 이런식으로 서비스종류가 있는 필요한 서비스 클릭

    7. 페이지 가장 밑에 XML과 JSON 이 있다 우리는 JSON 이 필요하니 밑에꺼 복사!

일별 박스오피스

 

    8. 자세히 보면 맨 마지막에 날짜가 있다 오늘을 기준으로 2022년3월11일 박스오피스를 검색해보자

    9. 주소창에 입력하면 이러한 데이터를 확인할 수 있다! 이 데이터 중 필요한 정보만 가져와보겠다(파싱)

2022년 3월 11일 기준 일별 박스오피스

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="../js/jquery-3.6.0.js"></script>
<script type="text/javascript">
	$(function(){
		$('#btnOk').on('click',function() {
			$.ajax({
				type: "get",
				url: "https://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=e7340032dd56a5699df512d551a3f5c8&targetDt=20220311",
				dataType: "json", 
			})
			.done(function (data) {
				$('#resultArea').html('<table border="1">' 
						+ '<th width="100">현재순위(rank)</th><th width="400">영화명(movieNm)</th><th width="150">개봉일(openDt)</th><th width="100">누적관객수(audiAcc)</th>' 
						+ '</table>');
				
				// 1. 전체 조회 결과에 해당하는 "bosOfficeResult" 추출
				// => 최상위 객체의 키이므로 data 변수를 통해 바로 접근
				var boxOfficeResult = data.boxOfficeResult;
				
				// 2. "boxOfficeResult" 내의 "boxOfficeType", "showRange" 추출
				var boxofficeType = boxOfficeResult.boxofficeType;
				var showRange = boxOfficeResult.showRange;
				$('#resultArea').prepend(boxofficeType+' | '+showRange); // boxofficeType + 날짜 출력
				// 3. "boxOfficeResult" 내의 박스오피스 영화 목록 ("dailyBoxOfficeList") 객체 추출
				var dailyBoxOfficeList = boxOfficeResult.dailyBoxOfficeList;
				
				// 4. "dailyBoxOfficeList" 내의 각 영화 정보 객체를 추출 => 배열 내에 각 객체가 저장되어 있음
				var dailyBoxOffice = dailyBoxOfficeList[0]; // rank, movieNm, openDt, audiAcc 만 추출해보자!
				
				for(dailyBoxOffice of dailyBoxOfficeList){
					
					$('#resultArea > table').append(
						'<tr>'
						+ '<td>' + dailyBoxOffice.rank + '</td>'
						+ '<td>' + dailyBoxOffice.movieNm + '</td>'
						+ '<td>' + dailyBoxOffice.openDt + '</td>'
						+ '<td>' + dailyBoxOffice.audiAcc + '</td>'
						+ '</tr>'
					)
				}
			})
			.fail(function() {
				$('#resultArea').html('<h4>JSON 요청실패!</h4>');
			});
		});
	});

</script>
</head>
<body>
	<h1>clone_test7_json.jsp</h1>
	<input type="button" value="JSON 파싱" id="btnOk">
	<div id="resultArea"></div>	
</body>
</html>

후.. 역시 한번에 성공하진 못했지만 오류 다 잡아내고 성공!

 

출력 결과

이상한 나라의 수학자?? 엘리스 짝퉁인가ㅎ