ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python으로 미세먼지 농도를 확인하자!
    Programming/Python 2020. 3. 6. 17:05

     

     

     

    안녕하세요? 학생 개발자 고기꿉자 입니다. 
    오늘은 공공데이터포털 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


    마지막으로 실행결과를 보여드리고 끝낼께여!

     



    이상으로 긴 글 읽어주셔서 감사합니다!
    사랑해요!

    댓글 3

    • 플_ 2020.03.06 21:48 신고

      앗 너무 신기하네요~ 잘 보고 갑니다^^

    • 비더탑 2020.04.24 23:49

      잘 보고 갑니다. 이런 것도 찾고 정말 대단합니다. ㅎ

    • 엄채연 2020.04.27 16:59

      import requests

      from bs4 import BeautifulSoup

      import pandas

      M = '&numOfRows=1&pageNo=1&stationName=마포구&dataTerm=DAILY&ver=1.3'

      key = 'api키 복붙'

      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)')


      모듈도 3개 beautifulsoup까지 설치했는데 안나오는 이유가 뭔가요? 최근 api사이트가 리뉴얼된게 영향이 있나요?