URL 상세 정보
통계목록
통계목록 API를 이용하기 위한 요청변수, 출력정보, 샘플데이터를 제공합니다. 출력포맷으로 JSON과 SDMX를 제공합니다.
-
요청URL
https://kosis.kr/openapi/statisticsList.do?method=getList
-
요청변수
요청URL로 요청변수, 변수타입, 설명, 비고를 제공합니다 요청변수 변수타입 설명 비고 apiKey String 발급된 인증 key 필수 vwCd String 서비스뷰 코드
· MT_ZTITLE : 국내통계 주제별
· MT_OTITLE : 국내통계 기관별
· MT_GTITLE01 : e-지방지표(주제별)
· MT_GTITLE02 : e-지방지표(지역별)
· MT_CHOSUN_TITLE : 광복이전통계(1908~1943)
· MT_HANKUK_TITLE : 대한민국통계연감
· MT_STOP_TITLE : 작성중지통계
· MT_RTITLE : 국제통계
· MT_BUKHAN : 북한통계
· MT_TM1_TITLE : 대상별통계
· MT_TM2_TITLE : 이슈별통계
· MT_ETITLE : 영문 KOSIS
필수 parentId String 시작목록 ID 필수 format String 결과 유형(json) 필수 content String 헤더 유형(html, json) 선택 -
출력결과
출력변수로 출력변수,내용,설명을 제공합니다 결과변수 설명 형식 VW_CD 서비스뷰ID VARCHAR2(40) VW_NM 서비스뷰명 VARCHAR2(300) LIST_ID 목록ID VARCHAR2(40) LIST_NM 목록명 VARCHAR2(300) ORG_ID 기관코드 VARCHAR2(40) TBL_ID 통계표ID VARCHAR2(40) TBL_NM 통계표명 VARCHAR2(300) STAT_ID 통계조사ID VARCHAR2(40) SEND_DE 최종갱신일 VARCHAR2(8) REC_TBL_SE 추천 통계표 여부 VARCHAR2(10) -
통계자료 예제
(JSP, R, Python) -
샘플데이터 확인
파라미터(Input)
파라미터(Input)로 필드명,설명,조회조건을 제공합니다 요청변수 설명 조회조건 VW_CD 서비스뷰코드 parentListId 시작목록ID 결과(Output)
JSON 결과
소스보기
소스
-
<!--
KOSIS OpenAPI를 이용하여 통계목록을 생성하는 예제입니다.
이 소스는 KOSIS API를 사용하는데 참고가 되도록 제공하는 것으로
사용자의 운영환경에 따라 수정작업이 필요합니다
* 유의사항 : Ajax를 활용하여 개발을 진행하실 때에는 CrossDomain으로 인한
통신문제가 발생 할 수 있습니다.
JSON 방식으로 제공받으실 때에는 개발홈페이지에 임의의 jsp를 생성하여
호출함으로써 CrossDomain에 대한 제약을 우회하실 수 있는 개발소스를 제공합니다.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=utf-8" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>통계청 - 공유서비스</title>
<link type="text/css" rel="stylesheet" media="all" href="https://kosis.kr/openapi/ext/style/subCommon.css" />
<link type="text/css" rel="stylesheet" media="all" href="https://kosis.kr/openapi/devGuide/devGuide01/css/openTmp.css" />
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide01/js/dojo.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide01/js/json.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide01/js/ajax.js"></script>
<script type="text/javascript" language="JavaScript">
var mapData;
// window onload 되었을때 실행 함수
dojo.addOnLoad ( function() {
// 통계목록 리스트를 조회하기위해 함수를 호출한다.
getSubList("MT_ZTITLE", 0, "");
});
/****************************************************
* 통계목록 리스트 조회 함수
* parameter : vwcd - 서비스뷰 코드 (통계목록구분)
* listLev - 목록 레벨
* parentId - 시작목록 Id
****************************************************/
function getSubList(vwcd, listLev, parentId) {
// ajax 통신을 위한 파라메터를 변수에 담는다.
var paraObj = {
// 임의의 jsp 페이지를 호출함으로써 cross domain 제약을 우회할 수 있다. (devGuidePop.jsp 소스는 소스 하단에 제공)
url : "http://[개발자 홈페이지 주소]/devGuidePop.jsp?method=getList&key=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&vwcd=MT_ZTITLE&parentId=" + parentId + "&type=json",
sync : true,
load : function(resObj, a, b) { mapData = resObj; },
error : function ( resObj, e ) { alert(dojo.toJson(resObj)); }
}
// ajax 통신 호출 함수
sendPost( paraObj );
// 통계목록 리스트를 화면에 출력하기 위한 함수
makeNode( Number(listLev) + 1 );
}
/****************************************************
* 통계목록 리스트를 화면에 출력하기 위한 함수
* parameter : listLev - 목록 레벨
****************************************************/
function makeNode(listLev) {
var nodeInfo="";
nodeInfo = nodeInfo+"<ul>";
for(var cnt=0; cnt<mapData.length; cnt++) {
nodeInfo = nodeInfo + "<li>";
if ( mapData[cnt].TBL_ID != null ) {
nodeInfo = nodeInfo + "<img src='http://kosis.kr/openapi/devGuide/devGuide01/image/stats.gif'> <a target='_balnk' href=\"http://kosis.kr/start.jsp?orgId="+mapData[cnt].ORG_ID+"&tblId="+mapData[cnt].TBL_ID+"&vw_cd="+mapData[cnt].VW_CD+"&up_id="+mapData[cnt].UP_ID+"\">"+mapData[cnt].TBL_NM+"</a>" ;
} else {
nodeInfo = nodeInfo + "<img src='http://kosis.kr/openapi/devGuide/devGuide01/image/folder.gif'> <a href=\"javascript:getSubList('"+mapData[cnt].VW_CD+"', '" + listLev + "', '"+mapData[cnt].LIST_ID+"');\">"+mapData[cnt].LIST_NM+"</a>" ;
}
nodeInfo = nodeInfo + "</li>";
}
nodeInfo = nodeInfo+"</ul>";
var r_node = document.getElementById("content"); //
var v_node = document.getElementById("depth"+listLev);
if( (typeof(v_node)!="undefined") && v_node!=null) {
v_node.innerHTML = nodeInfo;
}
else {
v_node = document.createElement("div");
v_node.setAttribute("id", "depth"+listLev);
v_node.className = "category0"+listLev;
v_node.innerHTML = nodeInfo;
r_node.appendChild(v_node);
}
var nodeCount = document.getElementsByTagName("div").length;
for( var cnt=(Number(listLev)+1); cnt< nodeCount; cnt++) {
if(document.getElementById("depth"+cnt)!=null)
r_node.removeChild(document.getElementById("depth"+cnt));
}
}
</script>
</head>
<body>
<div id="content" ></div>
</body>
</html>
// cross domain 제약을 우회하기 위한 jsp (devGuidePop.jsp)
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:set var="method" ><%out.println(request.getParameter("method") == null ? "" : (request.getParameter("method"))); %></c:set>
<c:set var="key" ><%out.println(request.getParameter("key") == null ? "" : (request.getParameter("key"))); %></c:set>
<c:set var="vwcd" ><%out.println(request.getParameter("vwcd") == null ? "" : (request.getParameter("vwcd"))); %></c:set>
<c:set var="parentId"><%out.println(request.getParameter("parentId") == null ? "" : (request.getParameter("parentId")));%></c:set>
<c:set var="type" ><%out.println(request.getParameter("type") == null ? "" : (request.getParameter("type"))); %></c:set>
<c:import url="http://kosis.kr/openapi/Expt/statisticsList.do?method=&apiKey=&vwCd=&parentListId=&format=" charEncoding="utf-8"/> -
library(httr) # api,크롤링 등에 사용
library(rvest) # HTML처리
library(jsonlite) # JSON 읽어올때 사용
rm(list=ls()) # 모든변수 초기화
# 환경변수에 사용자 key 정의 (환경변수 편집 usethis::edit_r_environ() )
# KOSIS_TOKEN = ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=
v_apiKey = Sys.getenv('KOSIS_TOKEN')
baseurl <- 'https://kosis.kr/openapi/statisticsList.do'
v_vwCd ='MT_ZTITLE' # 서비스뷰코드
v_parentListId ='A' # 시작목록ID
url_page <-
GET(
url = baseurl,
query = list(
method = 'getList',
format = 'json',
vwCd = v_vwCd,
parentListId = v_parentListId,
jsonVD = 'Y',
apiKey = v_apiKey %>% I()
)
)
url_page %>% content(as = 'text', encoding = 'UTF-8') %>% fromJSON() -> json
df_lists <- data.frame(서비스뷰 = c(json$VW_CD))
# 통계표가 연결된 목록과 중간목록을 구분하여 처리
if (is.null(json$LIST_ID) == FALSE) {
df_lists <- cbind(df_lists, 목록ID = c(json$LIST_ID))
df_lists <- cbind(df_lists, 목록명 = c(json$LIST_NM))
} else {
df_lists <- cbind(df_lists, 기관코드 = c(json$ORG_ID))
df_lists <- cbind(df_lists, 통계표ID = c(json$TBL_ID))
df_lists <- cbind(df_lists, 통계표명 = c(json$TBL_NM))
}
View(df_lists)
-
import json
# python 3.x 버전에서 사용 (2.x 버전이라면 from urllib import urlopen)
from urllib.request import urlopen
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
import functools as fc
import sys
#클릭한 목록에 대한 하위 목록 생성
class NewWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(NewWindow, self).__init__(parent)
centralWidget = QWidget()
self.setCentralWidget(centralWidget)
self.setGeometry(300, 300, 500, 500)
Setting(self, List_Id)
#최상위 목록 생성
class MyWindow(QtWidgets.QMainWindow, QPushButton):
def __init__(self):
super(MyWindow, self).__init__()
centralWidget = QWidget()
self.setCentralWidget(centralWidget)
self.setGeometry(200, 200, 500, 500)
self.setStyleSheet("background-color: white")
Setting(self, 'A')
#목록 셋팅 함수
def Setting(self, parentId):
#url을 통해 json 데이터 가져오기
with urlopen(
"https://kosis.kr/openapi/statisticsList.do?method=getList&apiKey=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&vwCd=MT_ZTITLE&parentListId="+parentId+"&format=json&jsonVD=Y") as url:
json_file = url.read()
py_json = json.loads(json_file.decode('utf-8'))
#하위 목록이 있다면 LinkButton, 하위 목록이 없다면 label로 생성
for i, v in enumerate(py_json):
if 'LIST_NM' in v:
btn = QCommandLinkButton(v['LIST_NM'], self)
btn.setStyleSheet("Text-align: left;"
"border: none;"
)
btn.setGeometry(100, 50 * i, 500, 40)
btn.clicked.connect(fc.partial(Action, self, v['LIST_ID']))
else:
lbl = QLabel(v['TBL_NM'], self)
lbl.setGeometry(100, 50 * i, 500, 40)
def Action(self, check):
global List_Id
List_Id = check
NewWindow(self).show()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())