[공공데이터][파이썬] - 공공데이터를 사용해보자

yeom yaloo·2022년 8월 9일
0

공공데이터 사용하기

https://www.data.go.kr/index.do

공공데이터 샘플코드(파이썬)

#샘플 코드!

import requests

url = 'http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19InfStateJson'
params ={'serviceKey' : '서비스키', 'pageNo' : '1', 'numOfRows' : '10', 'startCreateDt' : '20200310', 'endCreateDt' : '20200315' }

response = requests.get(url, params=params)
print(response.content)
  • 해당 공공데이터마다 필수로 넘겨야 하는 값들이 있는데 코비드 현황의 경우엔 serviceKey만 넘겨주면됩니다.

XML을 JSON으로 변환해보자

  • 해당 공공데이터의 경우엔 xml로만 제공이 되기 때문에 이를 딕셔너리 형태로 만든 뒤 다시 json형태로 만들어보자
response = requests.get(url, params = params)
content = response.content
dic = xmltodict.parse(content)
jsonString = json.dumps(dic['response']['body']['items'])
json_object = json.loads(jsonString)
  • 해당 공공데이터를 필수 정보와 함께 넘겨 응답을 받습니다.
  • response.content의 경우엔 xml출력 형식으로 넘어옵니다. 이를 dictionary 형태로 변환시켜줍니다.
  • xmltodict를 사용해 xml형식으로 적혀있는 변수를 딕셔너리로 변환시켜줍니다.
  • 딕셔너리형태로 만들어준 xml을 다시 json형태로 만들어줍니다.(딕셔너리 자료형을 JSON 문자열로 만들어 준다.)
    😎 ensure_ascii=False를 해당 코드 맨 뒤에 넣어주게 되면 아스키코드로 변환되는 것을 막아준다 한다.
  • json.loads의 경우엔 해당 json 형태의 문자열을 읽어준다. (이때 json.load는 json 파일을 읽어준다고 한다.)

공공데이터를 이용한 확진자 수 출력하기

전체 코드

import requests, xmltodict,json


url = 'http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19InfStateJson'

params = {
    'serviceKey' : '서비스키를 넣어주세요.', #필수
    'pageNo' : '1', #선택
    'numOfRows' : '10',#선택
    'startCreateDt' : '20220801',#선택
    'endCreateDt' : '20220809' }#선택

response = requests.get(url, params = params)
#xml -> json
content = response.content
dic = xmltodict.parse(content)
jsonString = json.dumps(dic['response']['body']['items'])
json_object = json.loads(jsonString)


for i in json_object['item']:
    print(f"날짜: {i['createDt']}")
    print(f"감염자 수: {i['decideCnt']}")
    print()

출력
날짜: 2022-08-09 09:06:13.288
감염자 수: 20694239
날짜: 2022-08-08 09:03:33.354
감염자 수: 20544342
날짜: 2022-08-07 09:06:42.352
감염자 수: 20489050
날짜: 2022-08-06 09:05:09.8
감염자 수: 20383552
날짜: 2022-08-05 08:19:11.853
감염자 수: 20272904
날짜: 2022-08-04 08:58:06.376
감염자 수: 20160037
날짜: 2022-08-03 09:01:06.599
감염자 수: 20052177
날짜: 2022-08-02 09:02:53.088
감염자 수: 19932291
날짜: 2022-08-01 09:00:03.794
감염자 수: 19820538

profile
즐겁고 괴로운 개발😎

0개의 댓글