student_developer
학생개발자의 IT Story
student_developer
전체 방문자
227,690
오늘
18
어제
149
반응형
  • 분류 전체보기 (187)
    • About Me (2)
    • IT NEWS (135)
      • Mobile NEWS (94)
      • laptop NEWS (3)
      • HW NEWS (4)
      • IT technology N.. (8)
      • IT company news (10)
    • OS || 운영체제 (1)
      • LINUX (1)
    • IT INFO (8)
      • Windows (5)
    • Programming (7)
      • C++ (1)
      • Python (3)
      • Project (1)
    • 일상 (7)
      • 일상 (6)
      • 이슈 (0)
    • 정보&꿀팁 (7)
    • IT & SW 칼럼 (1)

블로그 메뉴

    공지사항

    • 2020 새해 복 많이 받으세요^^
    • 소개

    인기 글

    • 학교 인터넷 게임 사이트 차단⋯
      2019.12.20
    • [Minecraft Java Edition 1.16.⋯
      2020.09.28
      [Minecraft Java Edition 1.16.⋯
    • Samsung 갤럭시 버즈를 윈도우⋯
      2021.01.02
      Samsung 갤럭시 버즈를 윈도우⋯
    • [Review | Tip]딥러닝 기반 코⋯
      2019.12.12
      [Review | Tip]딥러닝 기반 코⋯
    • [Python 3.x]택배 실시간 배송⋯
      2019.10.03
      [Python 3.x]택배 실시간 배송⋯

    태그

    • 삼성 갤럭시 S10 플러스
    • 삼성
    • ces2019
    • samsung galaxy S10 Plus
    • Exynos
    • Nvidia
    • 폴더블
    • 갤럭시
    • Exynos 9820
    • 삼성전자
    • 삼성 갤럭시 S10
    • ai
    • galaxy S10
    • 중국
    • 윈도우
    • 삼성 갤럭시
    • 갤럭시 언팩 2019
    • Samsung
    • 갤럭시 S10
    • 5G

    최근 댓글

    • 안녕하세요! 설치전 질문 있습⋯
      ㅜㅜ
    • node.js 설치 확인해보세요
      IlllIIllIllIl
    • URL 주소는 어디서 찾아볼 수⋯
      연빈
    • 리뷰 정말 잘 봤습니다. 블로거⋯
      세일즈코리아
    • 해당 프로젝트는 deprecated 되⋯
      student_developer

    최근 글

    • 삼성 갤럭시 GOS(Game Optimizi⋯
      2022.03.04
      삼성 갤럭시 GOS(Game Optimizi⋯
    • 삼성 Exynos 2200 공개!.. Sams⋯
      2022.01.18
      삼성 Exynos 2200 공개!.. Sams⋯
    • 삼성 갤럭시 S22 론칭 시점에 E⋯
      2022.01.13
      삼성 갤럭시 S22 론칭 시점에 E⋯
    • 삼성전자 CES 2022 티져 영상 공개
      2021.12.28
      삼성전자 CES 2022 티져 영상 공개
    • [Windows 11] 비정상적으로 느⋯
      2021.11.21
      [Windows 11] 비정상적으로 느⋯

    티스토리

    hELLO · Designed By 정상우.
    student_developer

    학생개발자의 IT Story

    Python으로 미세먼지 농도를 확인하자!
    Programming/Python

    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


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

     



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

    반응형
      'Programming/Python' 카테고리의 다른 글
      • 최근에 발생한 코로나19 바이러스 실시간 조회입니다.
      • 네이버 실시간 검색어 크롤링 프로그램
      API, 공공데이터포털, 미세먼지, 미세먼지API, 미세먼지조회, 오픈API, 파이썬, 파이썬 API, 파이썬미세먼지
      student_developer
      student_developer
      최신 IT 동향 정보 및 뉴스, SW개발 분야, 게임 관련 뉴스 및 정보를 다루는 종합 IT & Culture 블로그
      댓글쓰기
      1. 너울다락
        2020.03.06 21:48 신고
        앗 너무 신기하네요~ 잘 보고 갑니다^^
        수정/삭제댓글쓰기댓글보기
      2. 비더탑
        2020.04.24 23:49
        잘 보고 갑니다. 이런 것도 찾고 정말 대단합니다. ㅎ
        수정/삭제댓글쓰기댓글보기
      3. 엄채연
        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사이트가 리뉴얼된게 영향이 있나요?


        수정/삭제댓글쓰기댓글보기
      4. 링크
        2021.06.02 18:12
        웬만하면 그냥 API 링크를 달아주세요 찾기 매우 불편합니다.
        수정/삭제댓글쓰기댓글보기
      5. 초보자
        2021.06.08 22:16
        #공공데이터 api를 활용한 지역 실시간 미세먼지 측정 및 등급확인
        import requests
        from bs4 import BeautifulSoup
        import pandas

        M="&returnType=xml&numofRows=10&pageNo=1&stationName=칠금동=dataTerm=DAILY&ver=1.3"
        key="키는 알려드릴수없지만 대충 길어요"
        url="http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?serviceKey=키는알려드릴수없지만되게길어요&returnType=xml&numOfRows=10&pageNo=1&stationName=%EC%B9%A0%EA%B8%88%EB%8F%99&dataTerm=DAILY&ver=1.3"



        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+'㎍/m³')
        print('초미세먼지농도:'+i+'㎍/m³')
        # print('(좋음:1),(보통:2),(나쁨:3),(매우나쁨:4)')


        완성본입니다 안되시는 분들은 이 코드 참조하시면 되겠습니다 아 저는 등급은 쓰지 않기 때문에 주석 표시 했습니다만 필요하신 분들은 주석표시 3개를 해제 후 사용하시면 되겠습니다.
        코드 알려주셔서 감사합니다.
        아 장소도 수정하셔야합니다 저는 충북충주시 칠금동으로 작성했습니다
        + URL부분에서 줄이 나뉘는데 띄어쓰기 없습니다.
        수정/삭제댓글쓰기댓글보기
      6. 연빈
        2022.04.14 16:16
        URL 주소는 어디서 찾아볼 수 있을까요?? 공공데이터 포털에서 찾으려고 해도 찾기가 힘들어서ㅜㅜ..
        수정/삭제댓글쓰기댓글보기
      이전 글
      최근에 발생한 코로나19 바이러스 실시간 조회입니다.
      • 이전
      • 1
      • 2
      • 3
      • 다음

      티스토리툴바