지훈님이 상세하게 설명 정리해주셨다👍👍👍
- 원래는 데이터 분석가가 개발자에게 오픈API 데이터 요청해야 하나, (원래는 개발자의 영역)
- 오픈 API를 불러올 줄 안다면 개발자에게 요청하는 단계를 거치지 않아도 되어 매우 효율적
공공데이터포털(https://www.data.go.kr/) 오픈API 사용하기
🌐 포털홈페이지 🌐 단계
1.회원 가입 후 원하는 데이터 선택
2.오픈API → 활용신청
3. 홈페이지 우 상단 마이페이지 → 데이터활용 → Open API → 활용신청 현황
4. 데이터가 ‘승인되어 활용중인 단계’가 되었는지 확인
5. 데이터 선택 후 데이터포맷 유형 중 ‘XML’이 포함되어 있는 지 확인 (XML을 가르쳐주셨음)
- ❗인증키 외부에 공개되지 않게 주의❗
6. 인증키 찾기
(1) 일반 인증키 (Encoding) 전체 복사 후 → ‘인증키 설정🔒’ 선택 - 이미지
(2) Name : serviceKey에 복사 한 인증키 붙여넣기 후 설정 → 닫기
(3) OpenAPI 실행 준비 클릭 후 → returnType에 ‘XML’ 입력 → 하단 ‘OpenAPI 호출’
(4) 결과
if ⭕성공⭕, Server response에 Code 200 이 뜬다!!
- code 200 이미지
elif ❌실패❌, Server response에 Code 400 이 뜬다. “등록되지 않은 인증키 입니다.”
- code 400 이미지
(5) code 400이 떴다면, (1)번으로 돌아가 (Encoding) 바로 밑 일반 인증키 (Decoding) 복사 후 → ‘인증키 설정🔒’ → 설정해제 후 ‘Values:’ 에 일반 인증키 (Decoding) 붙여넣기
→ (2) → (3) → (4) code 200 뜨는지 확인
7. “Request URL” 복사 후 Google Colab으로 이동
📜 Google Colab 📜 단계
1. “빈 주소창”에 Request URL 붙여넣기 한 후 페이지 준비하기
2. “Google Colab”에 Request URL 붙여넣기 후
# 1단계 : ? 와 & 의 기준으로 띄어쓰기
https://api.odcloud.kr/api/15139382/v1/uddi:5a09990b-4f58-43ea-a59d-fae7b5ec72a3
?
page=1&
perPage=10&
returnType=XML&
serviceKey= ***일반인증키***
# 2단계 url과 params라는 변수로 나누기
url = "https://api.odcloud.kr/api/15139382/v1/uddi:5a09990b-4f58-43ea-a59d-fae7b5ec72a3"
params = {'page'=1&
'perPage'=10&
'returnType'='XML'&
'serviceKey'='***일반인증키***'}
# 3단계 params의 & 를 , 로 바꾸기
url = "https://api.odcloud.kr/api/15139382/v1/uddi:5a09990b-4f58-43ea-a59d-fae7b5ec72a3"
params = {'page'=1,
'perPage'=10,
'returnType'='XML',
'serviceKey'='***일반인증키***'}
# 마지막단계 parmas의 = 를 : 으로 바꾸고 params dic 형태로 정리하기
url = "https://api.odcloud.kr/api/15139382/v1/uddi:5a09990b-4f58-43ea-a59d-fae7b5ec72a3"
params = {
'page':1,
'perPage':10,
'returnType':'XML',
'serviceKey':'***일반인증키***'
}
3. parmas의 serviceKey 변수의 값에 🌐포털홈페이지 🌐 6.에서 성공한 인증키 값 붙여넣기
4. (1) 필요한 모듈 import 하기 (❗import 오류 시 구글 검색해서 모듈 pip 설치❗)
(2) requests.get 함수
(3) ET.fromstring 함수
# 필요한 모듈 import 하기
import requests
import pandas as pd
import xml.etree.ElementTree as ET
from google.colab import userdata # Google Colab에서 API 키 가져오기
url = "https://api.odcloud.kr/api/15139382/v1/uddi:5a09990b-4f58-43ea-a59d-fae7b5ec72a3"
params = {
'page': 1,
'perPage': 10,
'returnType': 'XML',
'serviceKey': '***일반인증키***'
}
# GET 요청 보내기
response = requests.get(url, params=params)
# XML 파싱
root = ET.fromstring(response.text)
5. “Chat GPT”한테 4번 코드 + 1번 페이지 + ‘root 를 df 형태로 만들기’ 라고 물어보기
6. 5의 결과를 붙여넣기 (완성)
- 결과 코드
import requests
import pandas as pd
import xml.etree.ElementTree as ET
from google.colab import userdata # Google Colab에서 API 키 가져오기
# API URL
url = "https://api.odcloud.kr/api/15139382/v1/uddi:5a09990b-4f58-43ea-a59d-fae7b5ec72a3"
# 요청할 파라미터 설정
params = {
'page': 1,
'perPage': 10,
'returnType': 'XML',
'serviceKey': '***일반인증키***'
}
# GET 요청 보내기
response = requests.get(url, params=params)
# XML 파싱
root = ET.fromstring(response.text)
# 데이터 추출
items = []
for item in root.findall(".//item"):
row = {}
for col in item.findall("col"):
row[col.attrib['name']] = col.text
items.append(row)
# DataFrame 변환
df = pd.DataFrame(items)
df
- 결과 이미지
🌟인증키 userdata 모듈의 get 함수로 “보안비밀” 처리하기🌟
- Google Colab 가장 왼쪽 열쇠 모양 클릭
- +새 보안 비밀 추가 클릭
- surviceKey의 값을 복사한 후 “보안 비밀의 ‘값’”에 붙여넣기
- userdata.get(’변수명’) : 변수명을 “보안 비밀의 이름”에 붙여넣기 (아래 코드 참고)
- 코드 실행 후 보안비밀 처리 성공하면 “보안 비밀의 노트북 엑세스” 파란색 체크 처리 됨
# 'surviceKey' : '***일반인증키***' -> 'surviceKey' : userdata.get('변수명')
'surviceKey' : userdata.get('api_key')
※ 참고사항 ※
- 데이터 행 총 개수 : 341개
- 페이지 당 보여지는 행(perPage) 개수 조정 10개 → 1000개 (☞ 결과창에 341개의 총 행)
++ 추가 ++
- [국내]무료 오픈 api 추천 리스트 모음
- 사이트 별로 오픈API 사용방법이 다르므로, 사이트 내 공지를 참고하거나 추가 검색 필요!