데이터 수집에 관한 API 통신 학습
API
: Application Programming Interface 의 약자
소프트웨어 구성 요소가 서로 통신할 수 있게 하는 방식 (메커니즘)
API 통신은 payload KEY 값 (통신키)을 기반으로 간단한 호출 구문을 통해
데이터를 송신받을 수 있다.
권한 관리
중간관리자
역할을 수행한다.프로그램 간 원활한 통신 지원
접속 표준화
PUBLIC API
: 누구나 사용가능한 공개 APIPRIVATE API
: 사내(회사) 에서 사용하는 API목적 : 사람과 기계 모두 쉽게 읽고 작성할 수 있는 데이터 교환 형식
기반 : JavaScript의 객체 표기법에서 유래했지만, 언어 독립적으로 사용 가능
데이터 구조:
{
"name": "John",
"age": 30,
"city": "New York"
}
" "
)로 감싸야 함문법 규칙:
목적 : 구조화된 데이터를 저장하고 전송하기 위한 마크업 언어
기반 : SGML (Standard Generalized Markup Language)에서 파생
데이터 구조 :
요소(Element) : 시작 태그와 종료 태그로 둘러싸인 데이터, 속성을 가질 수 있음
#예시
<person>
<name>John</name>
<age>30</age>
<city>New York</city>
</person>
속성(Attribute) : 태그 내에 포함된 키-값 쌍
#예시
<person name="John" age="30" city="New York" />
중첩(Nesting): 요소는 다른 요소를 포함할 수 있음.
#예시
<family>
<parent>
<name>Jane</name>
<age>40</age>
</parent>
<child>
<name>Tom</name>
<age>10</age>
</child>
</family>
문법 규칙:
" "
)로 감싸야 함프로토콜(PROTOCOL)
: 메세지를 주고 받는 양식과 규칙의 체계, 통신 규약
프로토콜 종류
계층 | 프로토콜 |
---|---|
응용(Application) | HTTP, SMTP, FTP, Telnet |
표현(Presentation) | ASCII, MPEG, JPEG, MIDI |
전송(Transport) | TCP, UDP, SPX |
네트워크(Network) | IP, IPX |
데이터 링크(Data Link) | Ethernet, Token Ring, FDDI, Apple Talk |
인터넷에서는 TCP 와 IP 라는 프로토콜이 표준으로 사용
프로토콜 주요 기능
HTTP (Hyper Text Transfer Protocol)
: 웹 환경에서 정보를 주고 받기 위한 프로토콜
HTTP API
: HTTP를 이용해 프로그램끼리 소통하는 API
REST
: HTTP를 효과적으로 활용하기 위한 원칙
REST API
: REST 원칙을 준수하여 만든 API
역사 : 2000년 로이 필딩(Roy Fielding)의 박사학위 논문에서 최초로 소개
HTTP 설계의 우수성을 활용하기 위한 아키텍처로 REST를 발표
특징 : REST API는 HTTP 통신 프로토콜을 따르면서 아래 4가지 추가 규약을 준수함
리소스 식별: URI(Uniform Resource Identifier)를 사용하여 리소스 식별
메시지를 통한 리소스 조작: HTTP 메서드(POST, GET, PUT, DELETE)를 사용하여 조작
자기서술적 메시지: HTTP 메시지가 충분한 정보를 포함하여 클라이언트가 서버의 기능을 이해할 수 있도록 함
애플리케이션 상태 전이 엔진(HATEOAS, Hypermedia As The Engine Of Application State): 클라이언트가 동적으로 서버가 제공하는 링크를 통해 애플리케이션의 상태를 전이
API 통신 KEY 발급받기 (서울 열린데이터광장 예시)
서울시청 사이트 회원가입
서울 열린데이터광장 로그인
OPEN API 클릭하여 인증키 신청 진행
샘플 URL 확인
API 통신을 통해 데이터를 제공하는 주요 사이트
주요 API 제공 사이트 목록
공공데이터포털
대한민국 정부가 제공하는 공공 데이터 API
다양한 분야의 공공 데이터를 제공
카카오 API
카카오톡, 카카오맵, 카카오스토리 등의 카카오 서비스 데이터 제공
로그인, 메시지 전송, 지도 데이터 등 다양한 기능을 API로 제공
네이버 API
네이버의 검색, 블로그, 카페, 쇼핑, 지도 등 다양한 서비스 데이터를 제공
로그인, 검색, 번역, 음성 인식 등 다양한 API를 통해 서비스 연동 가능
구글 API
구글의 검색, 지도, 유튜브, 애널리틱스 등의 서비스 데이터를 제공
Google Maps, YouTube Data, Google Analytics 등의 API를 통해 다양한 데이터와 기능을 이용할 수 있음
Riot API
리그 오브 레전드와 같은 게임 데이터 제공
게임 통계, 플레이어 정보, 매치 데이터 등을 API로 제공하여 게임 애플리케이션 개발에 활용
한국은행 API
한국은행에서 제공하는 경제 및 금융 데이터 API
경제지표, 통계 데이터 등을 제공하여 경제 연구 및 분석에 활용 가능
REST API를 사용하기 위해 파이썬에서 requests
라이브러리를 사용
requests
라이브러리는 파이썬으로 HTTP 호출 시 가장 많이 사용된다.주요 함수 4가지
GET
: 요청, 값 가져오기 (주로 사용하는 함수)
POST
: 생성, 액션
PUT
: 수정, 덮어 씌우기
DELETE
: 삭제
# 라이브러리 설치 !pip install requests # 라이브러리 불러오기 import requests import pprint import json import pandas as pd
(인증키)
부분에는 개인 KEY 값을 넣으면 된다.
# 서울시 열린광장에서 복사해온 KEY 값과 URL 기입 # url 중 xml 부분을 json 으로 변경 # 'http://openapi.seoul.go.kr:8088/(인증키)/xml/GetParkInfo/1/5/' url = 'http://openapi.seoul.go.kr:8088/(인증키)/json/GetParkInfo/1/5/'
JSON FILE
불러오기
# request library 를 이용한 json file 로드 response = requests.get(url).json()
JSON
데이터 확인
# json 데이터 확인 response
JSON FILE
데이터의 KEY 값 확인
# json file 의 key 값 확인 (각 딕셔너리 값으로 이뤄져있음) response['GetParkInfo'].keys()
JSON FILE
데이터의 ROW 데이터 불러오기
# json 파일의 row 데이터 로드 response['GetParkInfo']['row']
JSON FILE
형식을 DATAFRAME 으로 받기
# json file 형식을 dataframe 으로 받아주기 raw1 = pd.DataFrame(response['GetParkInfo']['row']) raw1.head()
말로만 듣고 검색만 해보고 그렇구나 하고 말았던 API 연동을
쉽게 이해할 수 있게 가르쳐 주신 튜터님께 감사 !
OPEN API
만 보이면 다 연결해서 가져오고 싶어질 것 같다 : )