본문 바로가기
개발(Develop)/파이썬(Python)

파이썬(Python)/ requests 패키지란 ?/ GET, POST, PUT, DELETE 방식/ 파이썬으로 API 데이터 가져오기/ 파이썬으로 서울시 미세먼지 데이터 활용하기

by 왁왁s 2021. 5. 30.

 

그러면 이전 글 '파이참'을 통해 다운로드 받았던

'requests 패키지'가 무엇이고 어떻게 사용하는지에 대해 알아보도록 하자.

 

requests 라이브러리란?

requests 라이브러리는 한 눈에 봤을 때도 어떤 기능인지 알도록

직관적인 API를 제공한다. 예전에 Ajax를 다뤘을 때의 GET, POST가 여기서도 쓰인다.

어떤 방식의 HTTP 요청을 하는 지에 따라서 다른 함수를 사용한다.

 

requests 패키지는 Ajax와 유사하게 API 데이터를 추출할 때 해당 패키지를 사용하며,

파이썬에서 HTTP를 호출하는 프로그램을 작성할 때 주로 사용한다.

GET 방식: requests.get()
POST 방식 : requests.post()
PUT 방식 : requests.put()
DELETE 방식 : requests.delete()


requests 라이브러리는 어떻게 사용하는가?

 

import requests # requests 라이브러리 설치 필요

res = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')
resj = res.json()

print(resj['RealtimeCityAir']['row'][0]['NO2'])

사용 방법은 위의 코드와 같다.

우선 requests 라이브러리를 설치했다 가정하고, 

임포트(import)를 하여 requests 라이브러리를 가져온다.

 

그리고 res 변수에 requests.get( 'API url 주소')을 하여

API로부터 데이터를 res 변수로 가져온다(GET 방식).

 

Ajax에서 다뤘던 것과 같은 값을 가져온다. Ajax에선

여러 줄의 코드를 작성했지만 여기서는 코드 한 줄로 데이터를 가져올 수 있다.

 

res 변수 아래 resj = res.json( )은

res변수에 블러온 데이터가 json의 포맷(형태)을 가지고 있다면

json( ) 함수를 통해 json의 형태로 출력할 수 있도록 변형 후 

resj 변수에 다시 넣은 것이다.

 

여기서 json의 형태란 딕셔너리(dictionary, 사전) 객체를 의미한다.

res 변수에 있는 데이터를 딕셔너리와 리스트의 json 형태로 바꿔주는 것을 말한다.


위에 API url을 복사해서 새 창에서 열어봤을 때

아래와 같이 복잡하게 나타난다면

웹 / JSON이란?/ JSON View/ JSON 소프트웨어 / 크롬확장프로그램 JSONView/꿀팁

 

웹 / JSON이란?/ JSON View/ JSON 소프트웨어 / 크롬확장프로그램 JSONView/꿀팁

JSON (JavaScript Object Notation)이란? 데이터를 저장하거나 전송할 때 쓰이는 경량의 데이터 교환 형식이다. 특정 프로그래밍 문법이 아닌 단순히 데이터를 표시하는 표현 방법이기 때문에 깊게 파고

parkjh7764.tistory.com

해당 글을 참고하자.

해당 글을 잘 따라하면

아래와 같이 한 눈에 보기 쉽게 JSON 형식이 바뀌게 된다.


그럼 다시 requests 패키지로 API를 활용해보자.

 

requests 패키지를 사용해 API에서 선택적으로 데이터를 가져오려면?

만약 위 API에서 서울 구 이름과 해당 구에 미세먼지 데이터만 

가져와 출력하고자 한다면 아래와 같이 requests를 활용할 수 있다.

import requests # requests 라이브러리 설치 필요

r = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')
rjson = r.json()

citys = rjson["RealtimeCityAir"]["row"]

for city in citys:
    gu_name = city["MSRSTE_NM"]
    gu_mise = city["IDEX_MVL"]
    print(gu_name, gu_mise)

해당 문법은 '파이썬(Python)'으로 작성한 것이기 때문에

파이썬에 대한 기본적인 지식이 있어야 한다.

여기서 파이썬 for문과 같은 반복문, 변수에 대해서만 공부해도

충분히 작성할 수 있는 코드이다.

 

위와 같이 코드를 작성해서 실행시키면

아래와 같이 구 이름과 미세먼지 값만 출력할 수 있다.

 


미세먼지가 높은 지역만 골라내려면?

조금 더 나아가

서울에 있는 전체 구 중에서 미세먼지 값이 40 이상인 

지역만 출력하는 것을 해보자.

 

이는 나중에 웹을 만들 때 미세먼지에 따라

고미세먼지 지역을 구분할 수 있다.

 

import requests # requests 라이브러리 설치 필요

r = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')
rjson = r.json()

citys = rjson["RealtimeCityAir"]["row"]

for city in citys:
    gu_name = city["MSRSTE_NM"]
    gu_mise = city["IDEX_MVL"]
    if(gu_mise > 40):
        print(gu_name, gu_mise)

코드 상으로는 매우 단순하다.

if문인 조건문만 추가해주면 되기 때문이다.

 

위와 같이 코드를 작성하면

아래와 같은 결과가 나온다.

 

 

댓글