Python 실습 | 공공데이터포털 오픈API를 파이썬에 연결하는 방법

2025. 1. 20. 13:37·Python

지훈님이 상세하게 설명 정리해주셨다👍👍👍

  • 원래는 데이터 분석가가 개발자에게 오픈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 함수로 “보안비밀” 처리하기🌟

  1. Google Colab 가장 왼쪽 열쇠 모양 클릭
  2. +새 보안 비밀 추가 클릭
  3. surviceKey의 값을 복사한 후 “보안 비밀의 ‘값’”에 붙여넣기
  4. userdata.get(’변수명’) : 변수명을 “보안 비밀의 이름”에 붙여넣기 (아래 코드 참고)
  5. 코드 실행 후 보안비밀 처리 성공하면 “보안 비밀의 노트북 엑세스” 파란색 체크 처리 됨
# 'surviceKey' : '***일반인증키***' -> 'surviceKey' : userdata.get('변수명')
'surviceKey' : userdata.get('api_key')

 


※ 참고사항 ※

  • 데이터 행 총 개수 : 341개

  • 페이지 당 보여지는 행(perPage) 개수 조정 10개 → 1000개 (☞ 결과창에 341개의 총 행)


++ 추가 ++

  • [국내]무료 오픈 api 추천 리스트 모음
    • 사이트 별로 오픈API 사용방법이 다르므로, 사이트 내 공지를 참고하거나 추가 검색 필요!
'Python' 카테고리의 다른 글
  • Python 실습 | penguins 데이터셋에서 평균보다 작은 데이터 선택하고(transform), 새로운 열 추가해서 조건에 따라 다른 값 넣기 (lambda)
  • Python 실습 | 윤년/평년 구하기
  • 통계 실습 | 파이썬으로 중심극한정리(CLT) - 각 분포의 표본의 평균 시각화
  • 통계 실습 | 파이썬으로 중심극한정리(CLT) - 데이터 생성하기
초담
초담
4년차 마케터입니다
  • 초담
    그로스마케터의 기록
    초담
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (117)
      • Data Analytics Project (3)
      • SQL (55)
      • Python (43)
      • GA4 (0)
      • Tableau (8)
      • 아티클 스터디 (7)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
초담
Python 실습 | 공공데이터포털 오픈API를 파이썬에 연결하는 방법
상단으로

티스토리툴바