공공 API 데이터 그래프화

고수진·2021년 5월 4일
0

날짜 인자 함수로 데이터호출

import requests, xmltodict, json

def get_corona_data(startCreateDt, endCreateDt):
    url = 'http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19SidoInfStateJson'

    params = {
        'serviceKey': 'dfPDXfzKqyDm807A3Q9rheK45I9SMsUIMCgWA4JuA4rXcEF2ZPqRBwbEPhfGzVdg7lzwpKTL7susIXvSruU+/w==',
        'pageNo': '1',
        'numOfRows': 10,
        'startCreateDt': startCreateDt,
        'endCreateDt': endCreateDt,
    }

날짜 인자 함수로 호출

res = requests.get(url, params=params)

    dict_data = xmltodict.parse(res.text)

    json_data = json.dumps(dict_data)

    dict_data = json.loads(json_data)

xml dict로 변환 -> dict(튜플) jason으로 변환 -> jason dict로 다시 변환

totalCount = dict_data['response']['body']['totalCount']
    if totalCount == '0':
        return False


    # 지역 정보를 담은 리스트
    area_data = dict_data['response']['body']['items']['item']
    area_data.reverse()


    return  area_data

Flask로 앱생성하여 오늘날짜 데이터 받기

from flask import Flask, render_template
import corona_data
from datetime import date, timedelta

# 앱생성
app = Flask(__name__)

# url 라우터
@app.route('/')
def index():
    now = date.today()
    now_str = now.strftime('%Y%m%d')

    # 오늘 날짜로 요청
    data = corona_data.get_corona_data(now_str, now_str)
    print(data)

    # 없으면 어제날짜로 요청
    if not data:
        yesterday = now - timedelta(days=1)
        yesterday_str = yesterday.strftime('%Y%m%d')
        print(yesterday_str)

        data = corona_data.get_corona_data(yesterday_str, yesterday_str)
        print(data)
        
	# 첫번째 데이터 제외
    return render_template('index.html', data=data[1:])

현재의 날짜와 시간을 문자열로 출력 - strftime 메서드

html

	{{data}}
    {% for d in data%}{{d.gubun}},{% endfor %}
    
    {{d.qurRate is number}}  ----숫자, 스트링 확인법
    
    <!--    str로 출력--> 
    {% for d in data%}"{{d.gubun}}",{% endfor %}

html에 jason table 출력
dict_data['response']['body']['items']['item']['gubun]데이터 출력

{{d.qurRate|float}}

파이썬 내장함수 float()를 이용해서 숫자나 문자열을 실수형 (Float)으로 변환
<class 'int'>
2
<class 'float'>
2.0

자바스크립트 차트샘플 사이트
chartjs

참고 영상
반원의코딩랜드

profile
수진고

0개의 댓글

관련 채용 정보