Python basic
  • Python 기초 수업
  • Python 설치
  • Python의 기본
    • Python 시작하기
    • 변수(Variable)
    • 산술 연산자
    • 문자열(String) 출력
    • 문장(Statement)
  • 자료형
    • 정수형(Integer)
    • 실수형(Float)
    • 부울형(Bool)
    • 복소수형(Complex)
    • 문자열형(String)
  • 조건문
  • 자료구조
    • List
    • Set
    • 튜플(Tuple)
    • 딕셔너리(Dictionary)
  • 반복문
  • 문제 타임
  • 함수(Function)
    • 기본형 함수
    • 매개변수(Parameter)와 반환값(Return Value)
    • 가변매개변수 함수
    • 함수 설명 표시
    • 변수의 범위
  • 모듈(Module)
    • 모듈의 이용
    • __name__ 그리고 '__main__'
  • 예외처리(Exception Handling)
    • try, except, else, finally
  • 클래스(Class)
    • Class 심화
  • PyQt
    • PyQt 설치
    • PyQt Widget
      • QWidget
      • QLabel
      • QLineEdit
      • QTextEdit
      • QPushButton
      • QCheckBox
      • Application Make
        • Widget의 배치 #1
        • Widget의 배치 #2
        • 숫자 맞추기 게임
        • 야구게임
  • OPEN API(공공데이터 포탈)
    • 공공데이터 사용하기
  • 크롤링 (Crawling)
    • Crawling Library 설치
    • 날씨, 미세먼지 농도
  • SQLlite
    • DB의 작성
  • Dic 참고
  • 함수 참고 코드
  • Widget 배치 시작 코드
  • 야구게임
Powered by GitBook
On this page

OPEN API(공공데이터 포탈)

나라에서 제공하는 정보를 활용해봅시다.

Previous야구게임Next공공데이터 사용하기

Last updated 6 years ago

OPEN API ?

​

공공데이터를 이용하기 위해 공공 데이터 포털에 회원 가입합니다.

신청을 하고 난 후 마이페이지

테스트를 한 결과를 XML, JSON으로 받아봅시다.

xml
<OpenAPI_ServiceResponse>
	<cmmMsgHeader>
		<errMsg>SERVICE ERROR</errMsg>
		<returnAuthMsg>SERVICE_KEY_IS_NOT_REGISTERED_ERROR</returnAuthMsg>
		<returnReasonCode>30</returnReasonCode>
	</cmmMsgHeader>
</OpenAPI_ServiceResponse>
{"fields":[],"records":[]}

위와 같이 나온다면 서비스 키가 아직 등록되지 않은 상태이니 조금 기다려야 합니다.

정상적인 데이터는 아래와 같이 생겼습니다.

공휴일 정보 조회.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
    <header>
        <resultCode>00</resultCode>
        <resultMsg>NORMAL SERVICE.</resultMsg>
    </header>
    <body>
        <items>
            <item>
                <dateKind>01</dateKind>
                <dateName>어린이날</dateName>
                <isHoliday>Y</isHoliday>
                <locdate>20180505</locdate>
                <seq>1</seq>
            </item>
            <item>
                <dateKind>01</dateKind>
                <dateName>대체휴무일</dateName>
                <isHoliday>Y</isHoliday>
                <locdate>20180507</locdate>
                <seq>1</seq>
            </item>
            <item>
                <dateKind>01</dateKind>
                <dateName>부처님오신날</dateName>
                <isHoliday>Y</isHoliday>
                <locdate>20180522</locdate>
                <seq>1</seq>
            </item>
        </items>
        <numOfRows>10</numOfRows>
        <pageNo>1</pageNo>
        <totalCount>3</totalCount>
    </body>
</response>
공휴일정보.json
{"fields":
    [
        {"id":"dateKind"},
        {"id":"dateName"},
        {"id":"isHoliday"},
        {"id":"locdate"},
        {"id":"seq"}
    ],
    "records":[
        {
            "dateKind":"01",
            "locdate":"20180505",
            "seq":"1",
            "isHoliday":"Y",
            "dateName":"어린이날"
        },{
            "dateKind":"01",
            "locdate":"20180507",
            "seq":"1",
            "isHoliday":"Y",
            "dateName":"대체휴무일"
        },{
            "dateKind":"01",
            "locdate":"20180522",
            "seq":"1",
            "isHoliday":"Y",
            "dateName":"부처님오신날"
        }
    ]

}

XML보다 json이 데이터도 가볍고 사용 구조도 간단함으로 xml과 json을 둘다 제공한다면 json을 이용하는게 편합니다. 여기서 json은 Python의 dictionary와 같은 구조를 가집니다.

요청 api http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo?solYear=2018&solMonth=05&ServiceKey=발급받은 일반 인증 키 &_type=json xml, json

구분은 젤 뒤 &_type=xml , &_type=json 두가지를 이용하면 된다.

2018년 05월의 공휴일은 20180505 어린이날, 20180507 대체휴무일, 20180522 부처님오신 날 3일 입니.

이처럼 공공데이터를 이용하면 다양한 정보를 쉽게 구할 수 있으니 필요한 정보가 있다면 한번 검색 해볼만합니.

Logo공공데이터 포털