[Python]OpenAPI로 데이터 불러오기

JONGBAO·2024년 9월 6일

Airflow 실습 중에 API를 활용하여 공공 데이터 받아오는 Custom Operator 만드는 부분이 있다.
해당 실습을 이해하려면 API 호출하는 부분에 대해 공부해야 할 것 같아 정리하고자 한다. 🐼


1. 실습 데이터

서울시 열린 데이터 광장(https://data.seoul.go.kr/)에서는 많은 데이터들을 API 형태로 공유하고 있는데, 그 중 서울시 부동산 실거래가 데이터를 가져오고자 한다.
API 호출해서 가져올 수 있는 데이터들은 OpenAPI 태그가 붙어있다.

  • 인증키 신청
    해당 데이터를 받아오기 위해서는 로그인 후 API 활용 신청을 해야 한다.
    인증키 신청 > 일반 인증키 신청 > 사용url: localhost (그 외부분은 자유롭게 기재)
    해당 과정 완료하면 개인마다 주어지는 API KEY 값을 활용할 수 있다.

2. 필요 url 확인

서울시 부동산 실거래가 데이터 페이지에 접속해보면 하단의 이미지처럼 샘플 URL에 대한 정보가 나와있다.

샘플 URL 구조를 살펴보면 아래와 같다.
http://openapi.seoul.go.kr:8088/(인증키)/xml/tbLnOpendataRtmsV/1/5/

  • http://openapi.seoul.go.kr:8088 : API 서버 주소 및 포트 번호
  • (인증키) : 발급받은 인증키
  • xml : 응답 데이터의 형식이며 json으로 변환 가능
  • tbLnOpendataRtmsV : API 서비스 명이자 데이터셋 명
  • 1/5/ : 데이터 요청 범위이며 1행부터 5행까지 요청하겠다는 의미

원하는 데이터 및 형식과 요청 범위 등이 담긴 URL을 통해 요청을 보내면 원하는 데이터를 반환받을 수 있다.

3. Python에서 데이터 받아오기

import requests
import json
from pprint import pprint

url = 'http://openapi.seoul.go.kr:8088/69657857647768643531636f766668/json/tbLnOpendataRtmsV/1/5/'
response = requests.get(url)
contents = json.loads(response.text)
pprint(contents)
  • requests: HTTP 요청을 보내는 라이브러리로, 이 코드를 통해 API에 GET 요청을 보낸다.
  • requests.get(url): API 서버에 GET 요청을 보내서 데이터를 가져온다. response에는 서버로부터의 응답이 저장된다.

해당 코드 실행 시 아래와 같이 데이터가 잘 받아와지는 것을 알 수 있다.

해당 데이터를 판다스 데이터프레임으로 변환해보자

key = list(contents.keys())[0]
data = contents.get(key).get('row')
df = pd.DataFrame(data)

파이썬 requests 라이브러리의 GET 메서드를 통해 데이터를 받아오는 과정을 정리해보았다.
requests 라이브러리에는 GET 뿐만 아니라 다양한 메서드를 지원하고 있으니 더욱 다양한 기능을 사용해볼 수 있겠다.

  • GET: 데이터를 가져옴
    POST: 데이터를 생성 및 전송
    PUT: 전체 데이터 업데이트
    PATCH: 부분 데이터 업데이트
    DELETE: 데이터 삭제
    HEAD: 헤더 정보만 요청
    OPTIONS: 사용 가능한 HTTP 메서드 확인
    REQUEST: 범용 메서드

0개의 댓글