다양한 Open API 사용하기¶
정부3.0 공공 데이터 포털 API 사용하기¶
- 공공 데이터 포털 가입하기
- https://www.data.go.kr
- 회원가입 -> 로그인 -> '한국환경공단_대기오염정보' 으로 검색 후, 해당 Open API 페이지로 이동공공 데이터 포털은 공인된 기관임에도 아쉽게도, 메뉴와 Open API 가 링크 등이 수시로 바뀌고 있습니다.
- 해당 API 에서 활용신청을 통해 인증키를 발급받은 후, 샘플코드 또는 페이지에 링크되어 있는 문서 또는 가이드를 기반으로 테스트 진행
-

- JSON 이외에 XML 포멧으로 데이터를 다루는 경우도 많음
- XML 관련 내용은 '다양한 데이터 읽기 - XML 파일' 참조
공공데이터포털 Open API 예제¶
In [ ]:
# Python 샘플 코드 #
from urllib2 import Request, urlopen
from urllib import urlencode, quote_plus
url = 'http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty'
queryParams = '?' + urlencode({ quote_plus('ServiceKey') : '서비스키', quote_plus('numOfRows') : '10', quote_plus('pageNo') : '1', quote_plus('stationName') : '종로구', quote_plus('dataTerm') : 'DAILY', quote_plus('ver') : '1.3' })
request = Request(url + queryParams)
request.get_method = lambda: 'GET'
response_body = urlopen(request).read()
print response_body
다양한 데이터 읽기 - XML¶
- XML(Extensible Markup Language)
- 특정 목적에 따라 데이터를 태그로 감싸서 마크업하는 범용적인 포멧
- 마크업 언어는 태그 등을 이용하여 데이터의 구조를 기술하는 언어의 한 가지
- 가장 친숙한 마크업 언어가 HTML
- XML은 HTML과 마찬가지로 데이터를 계층 구조로 표현
- XML 기본 구조
<태그 속성="속성값">내용</태그>
- 태그와 속성은 특정 목적에 따라 임의로 이름을 정해서 사용
32인치 LCD 모니터
- 다른 요소와 그룹으로 묶을 수도 있음
32인치 LCD 모니터 24인치 LCD 모니터
In [21]:
import requests
from bs4 import BeautifulSoup
service_key = 'tgDE%2F6ktrZEziWt7mgsFYPkH72KcNZ7wRrO9ow7PsWrvH%2Bj4vOcXheaIuI13bu%2FO4lU9RjHg3Try6qSjsCJtzw%3D%3D'
params = '&numOfRows=10&pageNo=1&sidoName=서울&searchCondition=DAILY'
open_api = 'http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty?ServiceKey=' + service_key + params
res = requests.get(open_api)
soup = BeautifulSoup(res.content, 'html.parser')
data = soup.find_all('item')
for item in data:
stationname = item.find('stationname')
pm10grade = item.find('pm10grade')
print (stationname.get_text(), pm10grade.get_text())
중구 1
한강대로 1
종로구 1
청계천로
종로 1
용산구 1
광진구 1
성동구 1
강변북로 1
중랑구 1
'파이썬 활용 > 다양한 파일들 불러는 방법' 카테고리의 다른 글
| json 불러오기 (0) | 2022.10.24 |
|---|