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
  • HTTP 통신
  • response 키의 값을 가져오기
  • 첫 번 째 공휴일 정보 가져오는 코드
  1. OPEN API(공공데이터 포탈)

공공데이터 사용하기

Python에서 가져와 사용합시다.

PreviousOPEN API(공공데이터 포탈)Next크롤링 (Crawling)

Last updated 6 years ago

HTTP 통신

python에서 데이터 통신하기 위해 여러 통신 라이브러리가 있습니다. 우리는 requests 모듈을 사용합니다.

import requests
URL = "http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo?ServiceKey=DkRPUL4om5zMDGR7jLAde9a%2Fsyg%2Bc%2FPKtilNgDwDjDZbJPzbuConyIOEYYZS96MjHndan5JKGCuZ8Kfm5HRyzw%3D%3D&_type=json&solYear=2018&solMonth=05"
html = requests.get(URL)
print(html.text)

01 데이터 통신을 하기위해 requests 모듈을 가져옵니다. 02 공공데이터 중 공휴일 정보를 가져오는 API 03 requests.get(URL) URL을 호출해서 데이터를 가져옵니다.

html을 출력하면 데이터가 보이지 않습니다. html에서 받아온 데이터는 서버에서 보내주는 형태로 받아야 합니다. 서버에서 보내는 형태와 상관없이 사용할 수 있는 방법과 json을 받는 방법을 알려드리겠습니다.

import requests
URL = "http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo?solYear=2018&solMonth=05&ServiceKey=DkRPUL4om5zMDGR7jLAde9a%2Fsyg%2Bc%2FPKtilNgDwDjDZbJPzbuConyIOEYYZS96MjHndan5JKGCuZ8Kfm5HRyzw%3D%3D&_type=json"
html = requests.get(URL)
print(html.text)
print('-----------------------')
print(html.json())

결과를 보면 html.text, html.json()이 둘다 같아 보입니다. 자세히 보면 html.text는 " " 를 이용되었고, json()은 ' '를 사용했네요. 더 큰 차이가 있습니다.

response 키의 값을 가져오기

import requests
URL = "http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo?solYear=2018&solMonth=05&ServiceKey=DkRPUL4om5zMDGR7jLAde9a%2Fsyg%2Bc%2FPKtilNgDwDjDZbJPzbuConyIOEYYZS96MjHndan5JKGCuZ8Kfm5HRyzw%3D%3D&_type=json"
html = requests.get(URL)
print(html.text.get('response'))
print('-----------------------')
print(html.json().get('response'))

04 딕셔너리 형태로 보이는 값에서 response 만 가져오려는 시도 06 4번과 같음

결과적으로 4번 라인에서 에러가 발생합니다. text 형태이기 때문에 .get을 사용할 수 없습니다. 딕셔너리 형태의 데이터를 활용하기 위해서는 .json() 이후 사용하셔야 합니다.

첫 번 째 공휴일 정보 가져오는 코드

import requests
URL = "http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo?solYear=2018&solMonth=05&ServiceKey=DkRPUL4om5zMDGR7jLAde9a%2Fsyg%2Bc%2FPKtilNgDwDjDZbJPzbuConyIOEYYZS96MjHndan5JKGCuZ8Kfm5HRyzw%3D%3D&_type=json"
html = requests.get(URL)
first = html.json().get('response').get('body').get('items').get('item')[0]
print(first.get('dateKind'))
print(first.get('dateName'))
print(first.get('isHoliday'))
print(first.get('locdate'))

04 리스트로 되어있는 item key의 0번째만 가져와서 사