공공데이터 미세먼지 API
공공데이터 API로 데이터 수집하기
1. 개요
데이터를 수집하는 방법은 지금까지처럼 크롤링을 사용하는 방법이 있고,
또다른 방법으로 오픈 API를 받아오는 방법이 있다.
오픈 API란 누구나 사용할 수 있도록 공개된 API를 말한다.
간단히 말해서 공개된 데이터로, 적절한 url과 파라미터들이 있다면 누구든 사용할 수 있다.
실시간 업데이트 되는 데이터나, 그만큼 업데이트가 빈번한 대용량의 데이터가 필요할 때 유용한다.
이번 글에서는 공공데이터 포털 API를 활용하여 실시간 대기오염 정보를 받아오려고 한다.
Python의 requests 라이브러리를 사용하였다.
가장 먼저, 공공데이터 포털에서 원하는 오픈 api를 활용신청을 받는다.
이 포스팅에선 아래와 같이, '한국환경공단_에어코리아_대기오염정보' api 를 사용했다.
활용신청을 넣고 허가를 받으면 마이페이지에 뜨게 된다.
허가받은 데이터를 열면 아래와 같이 화면이 뜬다.
활용신청을 넣기 전에는 보지 못했던, 일반인증키가 2개가 뜬다.
위 화면에서 아래로 스크롤 하면 아래와 같은 란이 나온다.
해당 API가 제공하는 상세 기능들이다.
다음중 '3 측정소별 실시간 측정정보 조회' 기능을 선택했다.
확인을 누르면 다음 요청 변수들이 뜬다.
요청변수들이란, 데이터를 요청할 때 필요한 파라미터 값이다.
미리보기를 하면 샘플 데이터를 볼 수 있다.
샘플 데이터에서는 각 변수명들과 인자 값들에 대한 정보를 미리 볼 수 있다.
일부만 갖고오자면 아래와 같다.
또, 각 변수에 대한 자세한 설명은 해당 API의 상세 설명에서 확인이 가능하다.
상세 설명 페이지에서 조회한 '3 측정소별 실시간 측정정보 조회' 의 변수 중 일부는 다음과 같다.
2. API 호출
아래 코드에서 url은 포탈에서 받아온 데이터들이 있는 .url이다.
parames 는 파라미터 들로 1.개요에서 봤던, 요청 변수와 같다.
serviceKey 에는 위의 모자이크 된 부분의 인증키를 넣는다. 둘 중 호출이 가능한 것으로 쓰면 된다.
그 외의 파라미터 정보들은 바로 위의 스크린 샷을 참고하면 된다.
requests.get 메서드를 사용하여 데이터를 요청한다.
import requests
import json
url = 'http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty'
params ={
'serviceKey' : '개인 인증키',
'returnType' : 'json',
'numOfRows' : '5',
'pageNo' : '1',
'stationName' : '강남구',
'dataTerm' : 'DAILY',
'ver' : '1.0'
}
response = requests.get(url, params=params)
result = json.loads(response.text)
위에서 각 변수들이 의미하는 바를 확인한 결과
pm10Value : 미세먼지 농도를, pm25Value : 초미세먼지 농도를 뜻한다.
그리고 샘플데이터에서 이 값은 ['response']['body']['items'] 안에 들어간 값으로 확인되었다.
따라서 아래처럼 다중 리스트 접근을 통해 정보를 갖고 와 infos에 저장한다.
그리고 infos 중에서 pm10Value 와 pm25Value를 호출한다.
#pm10Value : 미세
#pm25Value : 초미세
infos = result['response']['body']['items'] # dict, items 부터는 리스트
for i in infos:
print('미세 : ',i['pm10Value'],' / 초미세 : ',i['pm25Value']) #infos
출력결과는 아래와 같다.
샘플데이터를 5개 호출해 왔으므로 아래처럼 5개만 나타나는게 올바른 결과다.
이렇게 api를 이용해서 얻어온 데이터를 수집해보았다.
코드는 짧지만 api를 잘 활용하는데에 있어서는 어떤 변수가 무슨 인자값을 가지는지,
데이터가 어떤 구조를 가지고 있어 어떻게 접근해야 하는지 부분이 중요한 것 같다.
'Python' 카테고리의 다른 글
데이터 분석 1 - 영화 흥행 요인 분석 1 (0) | 2024.07.12 |
---|---|
crawling 6 - BeautifulSoup (0) | 2024.07.12 |
crawling 5 - SRT 예매 프로그램 (0) | 2024.07.11 |
crawling 4 - Google Playstore 리뷰 예제 (0) | 2024.07.11 |
crawling 3 - YES 24 예제 (0) | 2024.07.11 |