코로나는 언제 끝날까요...?
마스크 쓰는 것이 너무 답답합니다... 귀여운 고양이가 마스크를 안쓰는 것처럼요...ㅋㅋㅋㅋ
오늘은 공공데이터포털https://www.data.go.kr/index.do
에서 제공하는 open API를 통해 코로나 감염현황을 알아보고자 합니다...
저는 '코로나' 키워드로 검색을 해 open api 2페이지에 있는
보건복지부_코로나19 감염현황 총괄 통계 데이터를 이용하기로 했습니다!
우선 사이트에 가입하시고 데이터 활용신청을 합시다.
저는 활용 목적을 이렇게 적었습니다.
여기까지는 떡먹고 눕기네여 ㅎㅎ
그런데 신청승인까지 시간이 좀 걸리는...
기다리다가 드디어... 승인완료!
이렇게 마이페이지에 오픈API 개발계정에서 데이터에 대한 인증키를 얻을 수 있습니다.
여기 샘플코드가 제공됩니다 ㅎㅎ 그럼 일단 데이터를 불러오자구요!
import requests
url = 'http://apis.data.go.kr/1352000/ODMS_COVID_02/callCovid02Api'
params ={'serviceKey' : '#####################################', #인증키
'pageNo' : '1'
, 'numOfRows' : '500',
'apiType' : 'xml',
'status_dt' : '20221227' } #기준일자
response = requests.get(url, params=params)
print(response.text)
print(type(response.text)) #reponse.text의 타입 확인
주의할 점은 인증키 오류가 많이 난다는 것... 하지만 참고 몇 번 다시 실행해 보면 데이터가 불러와집니다...
저는 기준일자를 오늘인 2022년 12월 27일로 가져왔습니다.
결과는...?
주요 지표를 표로 한 번 살펴보면...
항목명(영문) | 항목명(국문) | 데이터 |
accDefRate | 누적확진율 | 0 |
accExamCnt | 누적검사수 | 22072870 |
accExamCompCnt | 누적검사완료수 | 0 |
careCnt | 치료중환자수 | 0 |
dPntCnt | 격리해제수 | 0 |
gPntCnt | 사망자수 | 31882 |
hPntCnt | 확진자수 | 28772196 |
resutlNegCnt | 결과음성수 | 0 |
statusDt | 기준일자 | 20221227 |
statusTime | 기준시간 | 00:00 |
uPntCnt | 검사중수 | 0 |
이런 식 입니다!
0으로 나오는 데이터가 이상해서 결과가 나오는 데이터만 검색해봤더니...
누적검사수, 사망자수, 확진자수는 이상이 없었습니다.
그래서 예전 날짜를 기준일자로 해봤더니 모든 데이터가 잘 나오더라고요!
아마 이 오픈api에서는 0으로 나온 데이터 항목들은 어느 시점 이후로는 제공하지 않는 듯 합니다...
그래도 우리는 오늘 현황을 알고 싶으니까 오늘의 데이터를 이용해봐요!
이제 우리가 할 일은 예쁘게 데이터를 출력해보는 것이겠죠?
데이터 형식을 보니 str이므로 사용하기 편하게 json형식으로 변환해 값을 꺼내와 봅시다.
!pip install xmltodict #xmltodict모듈을 사용하기위해 xmltodict패키지 설치
import requests
import xmltodict #xmltodict모듈 설치
import json #json모듈 설치
url = 'http://apis.data.go.kr/1352000/ODMS_COVID_02/callCovid02Api'
params ={'serviceKey' : '###################################################', #인증키
'pageNo' : '1'
, 'numOfRows' : '500',
'apiType' : 'xml',
'status_dt' : '20221227' } #기준일자
response = requests.get(url, params=params)
data_xml = response.text #xml형식의 데이터
data_json = json.dumps(xmltodict.parse(data_xml))
#xml데이터를 json형식으로 변환하기 위한 코드(xmltodict.parse의 괄호 안에 xml데이터를 집어넣어 json으로 변환)
data_json_fin = json.loads(data_json)
#키 값으로 접근하기 위한 코드
print(data_json_fin)
print(type(data_json_fin)) #데이터 형식 확인
결과가 이렇게 딕셔너리 형식으로 출력됩니다ㅎㅎ
이제 딕셔너리의 키값을 이용해 예쁘게 출력해봅시다.
저는 기준일자, 확진자수, 사망자수를 꺼내와서 확인하려고 합니다!
코드를 완성 시켜보면...
!pip install xmltodict #xmltodict모듈을 설치하기위해 xmltodict패키지 설치
import requests
import xmltodict #xmltodict모듈 설치
import json #json모듈 설치
url = 'http://apis.data.go.kr/1352000/ODMS_COVID_02/callCovid02Api'
params ={'serviceKey' : '###########################################################################', #인증키
'pageNo' : '1'
, 'numOfRows' : '500',
'apiType' : 'xml',
'status_dt' : '20221227' } #기준일자
response = requests.get(url, params=params)
data_xml = response.text #xml형식의 데이터
data_json = json.dumps(xmltodict.parse(data_xml))
#xml데이터를 json형식으로 변환하기 위한 코드(xmltodict.parse의 괄호 안에 xml데이터를 집어넣어 json으로 변환)
data_json_fin = json.loads(data_json)
#키 값으로 접근하기 위한 코드
print(data_json_fin['response']['body']['items']['item']['statusDt'][0:4]+'년',
data_json_fin['response']['body']['items']['item']['statusDt'][4:6]+'월',
data_json_fin['response']['body']['items']['item']['statusDt'][6:]+'일 기준 확진자수는',
data_json_fin['response']['body']['items']['item']['hPntCnt']+'명 이고 그 중',
data_json_fin['response']['body']['items']['item']['gPntCnt']+'명이 사망했습니다.')
이렇게 코드가 완성!
많은 사람이 돌아가셨군요...ㅜ
어서 빨리 코로나 이전의 세상으로 돌아갔으면 하는 마음입니다...
그럼 다음에 봐요~
'재미로 하는 코딩' 카테고리의 다른 글
네이버 웹 스크래핑 해보기 (0) | 2023.01.10 |
---|---|
로또가 당첨되려면 몇 번 뽑아야할까? (0) | 2023.01.09 |
정규표현식을 사용한 여러가지 유효성 검사 (3) | 2022.12.29 |
random모듈을 사용해 롤 라인 정하기 (0) | 2022.12.26 |
웹 크롤링으로 EPL 득점 순위를 알아보자!!! (4) | 2022.12.25 |
댓글