안녕하세요? 학생 개발자 고기꿉자 입니다.
오늘은 공공데이터포털 API를 사용하여 미세먼지 농도를 파이썬에서 확인 해봅시다!
공공데이터 포털 사이트: https://www.data.go.kr/
공공데이터포털
국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Dataset)와 Open API로 제공하는 사이트입니다.
www.data.go.kr
회원가입을 해주시고 로그인을 해주세요!
데이터셋 -> 오픈API -> 미세먼지 검색 -> 한국환경공단_대기오염정보 -> 활용신청 -> 바로 동의 해주시고 신청 -> 마이페이지 -> 대기오염정보 조희 서비스를 접속해주세요!
상세기능 정보에서 "측정소별 실시간 측정정보 조회"에서 "실행"을 눌러주세요
"미리보기" 클릭!
미세먼지 측정 데이터가 있습니다.
정리하겠습니다.
항목명(영문) |
항목명(국문) |
항목크기 |
항목구분 |
샘플데이터 |
항목설명 |
|
resultCode |
결과코드 |
2 |
1 |
00 |
결과코드 |
|
resultMsg |
결과메세지 |
50 |
1 |
NORMAL SERVICE. |
결과메세지 |
|
numOfRows |
한 페이지 결과 수 |
4 |
1 |
10 |
한 페이지 결과 수 |
|
pageNo |
페이지 번호 |
4 |
1 |
1 |
페이지 번호 |
|
totalCount |
전체 결과 수 |
4 |
1 |
60 |
전체 결과 수 |
|
items |
목록 |
- |
0..n |
- |
목록 |
|
dataTime |
측정일 |
20 |
1 |
2016-04-20 14:00 |
오염도측정 연-월-일 시간: 분 |
|
mangName |
측정망 정보 |
10 |
1 |
도시대기 |
측정망 정보 (국가배경, 교외대기, 도시대기, 도로변대기) |
|
so2Value |
아황산가스 농도 |
10 |
1 |
0.007 |
아황산가스 농도 (단위 : ppm) |
|
coValue |
일산화탄소 농도 |
10 |
1 |
0.4 |
일산화탄소 농도 (단위 : ppm) |
|
o3Value |
오존 농도 |
10 |
1 |
0.043 |
오존 농도 (단위 : ppm) |
|
no2Value |
이산화질소 농도 |
10 |
1 |
0.024 |
이산화질소 농도 (단위 : ppm) |
|
pm10Value |
미세먼지(PM10) 농도 |
10 |
1 |
73 |
미세먼지(PM10) 농도 (단위 : ㎍/㎥) |
|
pm10Value24 |
미세먼지(PM10) 24시간예측이동농도 |
10 |
1 |
55 |
미세먼지(PM10) 24시간예측이동농도 (단위 : ㎍/㎥) |
|
pm25Value |
미세먼지(PM2.5) 농도 |
10 |
1 |
44 |
미세먼지(PM2.5) 농도 (단위 : ㎍/㎥) |
|
pm25Value24 |
미세먼지(PM2.5) 24시간예측이동농도 |
10 |
1 |
31 |
미세먼지(PM2.5) 24시간예측이동농도 (단위 : ㎍/㎥) |
|
khaiValue |
통합대기환경수치 |
10 |
1 |
75 |
통합대기환경수치 |
|
khaiGrade |
통합대기환경지수 |
10 |
1 |
2 |
통합대기환경지수 |
|
so2Grade |
아황산가스 지수 |
10 |
1 |
1 |
아황산가스 지수 |
|
coGrade |
일산화탄소 지수 |
10 |
1 |
1 |
일산화탄소 지수 |
|
o3Grade |
오존 지수 |
10 |
1 |
2 |
오존 지수 |
|
no2Grade |
이산화질소 지수 |
10 |
1 |
1 |
이산화질소 지수 |
|
pm10Grade |
미세먼지(PM10) 24시간 등급 |
10 |
1 |
2 |
미세먼지(PM10) 24시간 등급자료 |
|
pm25Grade |
미세먼지(PM2.5) 24시간 등급 |
10 |
1 |
2 |
미세먼지(PM2.5) 24시간 등급자료 |
|
pm10Grade1h |
미세먼지(PM10) 1시간 등급 |
10 |
1 |
2 |
미세먼지(PM10) 1시간 등급자료 |
|
pm25Grade1h |
미세먼지(PM2.5) 1시간 등급 |
10 |
1 |
2 |
미세먼지(PM2.5) 1시간 등급자료 |
본격적으로 한번 만들어 볼까요?
Python 버전
3.5.*
3.6.*
3.7.*
3.8.*
Python 모듈
pip install requests
pip install pandas
Python 소스코드
import requests
from bs4 import BeautifulSoup
import pandas
M = '&numOfRows=1&pageNo=1&stationName=측정소명&dataTerm=DAILY&ver=1.3'
key = '발급받은api key'
url = 'http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?serviceKey='+ key + M
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
ItemList = soup.findAll('item')
for item in ItemList:
a = item.find('datatime').text
g = item.find('pm10value').text
i = item.find('pm25value').text
s = item.find('pm10grade1h').text
t = item.find('pm25grade1h').text
print('측정소: 측정소명')
print('측정시간:'+ a)
print('미세먼지 농도:'+ g +'㎍/㎥ ( ' + s + ' )')
print('초미세먼지 농도:' + i +'㎍/㎥ ( ' + s + ' )')
print('( 좋음: 1 ),( 보통: 2 ),( 나쁨: 3 ),( 매우나쁨: 4)')
발급 받은 key는
서비스 인증키에 있습니다!!
측정소명은 여기 링크로 통하여 알수있습니다: https://www.airkorea.or.kr/index
에어코리아
www.airkorea.or.kr
마지막으로 실행결과를 보여드리고 끝낼께여!
이상으로 긴 글 읽어주셔서 감사합니다!
사랑해요!