WEB API - [PYTHON]웹 API의 이해, 실습 (TWEEPY)

David's Data Science·2021년 9월 27일
0

웹 데이터 필요성

데이터 분석을 위해선 자료 수집이 우선 되어야 분석진행이 가능하다.
모든 자료를 수기로 만들 수는 없기 때문에 원하는 자료를 불러올 수 있는 기술적 역량이 필요하다.

API

API는 컴퓨터 프로그램들이 서로 상호작용을 할 수 있도록 하는 인터페이스이다.
여러 유튜브와 코칭 프로그램에서도 '키보드'와 같은 입력장치에 비유하는 것을 볼 수 있다. 우리가 키보드의 esc를 누르면 취소를 하고, 엔터를 누르면 다음으로 진행되는 것처럼, 프로그램 간 소통을 위한 방법을 제시하여 이를 통해 소통하고, 정보를 교환한다고 생각하면 된다.

예시:

Instagram API / Facebook API 등은 Instagram과 Facebook 각각의 서버와 소통할 수 있는 인터페이스 역할을 하는 키보드라고 볼 수 있다.

API의 정보제공 원리:


위 이미지와 같이, 클라이언트에서 API를 통해 정보를 요청하고, 서버에서 API를 통해 데이터 정보를 JSON 데이터로 반환해주는 방식이다. 위에서 언급한 키보드와 같이, API를 통해 원하는 정보를 선택해 요청하면 서버에서 반환해주는 프로그램 상에서의 입력과 출력을 생각하면 된다.

누구나 오가면서 사용할 수 있는 자판기로 예를 들었을 때, API는 자판기의 음료수 종류가 보이는 창으로 볼 수 있고, 원하는 음료를 선택하여 버튼을 누르면 자판기(서버)에서 음료수(정보)를 제공하는 방식의 웹 데이터 수집방법이다.

API의 특징은 자판기의 원리와 같이 클라이언트에서는 내부 서버에서 어떤 동작원리로 정보를 제공하는지 볼 수 없다는 점이다.
이는 고객의 편의성, 기업의 기술보안 등 여러가지 이유를 들 수 있다.

WEB API

Web Browser의 서버에 요청하기 위해 사용되는 API로, 가장 많이 사용된다.
kakao 지도 web API, 네이버 open API, Google API 등 많은 곳에서 API를 통해 서버에 접근 및 요청할 수 있도록 서비스 해놓았다.

REST API, RESTFUL API (Representational state transfer)

WEB의 장점을 가능한 활용하도록 하는 아키텍처의 제약조건을 준수하는 인터페이스이다.
HTTP 단일 프로토콜의 CRUD 메소드만으로 데이터를 요청하며, 그에 대한 표현들을 통일되게 하여 URI의 직관성을 높여 리소스를 한눈에 파악할 수 있도록 한다.

  • URI에 리소스 정보를 담는다.
  • RESTful한 URI작성을 해야한다. 통일된 방법, 메소드를 이용해야한다.(GET, POST, PUT, DELETE)
  • REST API 메시지를 보고 직관적으로 이해하는 구조가 되어야 한다.
  • STATELESS Protocol 지원으로 인해 불필요 자원을 관리하지 않고, 단순이 요청에 대한 처리만 한다.
    -> 항상 클라이언트와 서버가 연결된것이 아니라, 필요할 때 메시지를 통해 연결한다.
  • 클라이언트와 서버의 서비스요청 결과를 cache에서 임시저장을 하기 때문에 효율이 높다.

WEB API를 사용하는 클라이언트의 요청부터 REST API로 요청하게 되면 그에 맞는 정보를 서버로부터 받게 된다

Tweeter API

위에서 언급해봤던 수많은 WEB API 중 하나이며, 공급자인 Tweeter 측의 허가를 받아 해당 app에서 가진 정보를 사용 가능하다.

Tweepy package

python을 이용해 Tweeter API를 이용하기 위해선 Tweeter API 전용 라이브러리인 tweepy를 설치해야 한다.

pip install tweepy

위와 같은 코드를 통해 가상환경 및 로컬환경에 python tweepy package를 설치하면 된다.

Tweeter API 허가받기

  1. 트위터 개발자사이트 이동 https://developer.twitter.com/en
  2. 회원 가입 및 API 이용을 위한 API 키와 토큰 신청 후 승인 기다리기
    여기서 시간이 오래 걸릴 수 있으므로, Student 및 취미로 진행하는 것을 선택하는 것이 좋다.

Tweeter api 연결

import tweepy
import json

api_key = 'API KEY는 공개할 수 없다.'
api_key_secret = 'API KEY는 공개할 수 없다.'
access_token = 'API TOKEN은 공개할 수 없다.'
access_token_secret = 'API TOKEN은 공개할 수 없다.'

auth = tweepy.OAuthHandler(api_key, api_key_secret)		# API 키, 비밀키에 연결
auth.set_access_token(access_token, access_token_secret)	# 키를 연결한 변수에 토큰 연결
api = tweepy.API(auth)						# 최종 API 연결 Method

tweepy와 json을 import 한 뒤, 각 주어진 키와 토큰을 통해 연결을 진행한다.

Tweeter의 사용자 이름 가져오기

username = 'kim'
api.user_timeline(username)

위에서 Tweeter API를 연결한 api 변수에 user_timeline을 진행 하면 'kim'이름을 가진 사용자의 무수히 많은 tweet 정보들을 확일 할 수 있다.

절차에 따라 Tweeter API 이용에 대한 허가를 받은 뒤, Tweet 정보를 python을 이용해 불러봤다.
이러듯 API는 허가에 의해 정보 공급자의 데이터를 수집가능한 web data 수집 방법이다.

profile
데이터 사이언티스트가 되고싶은 David입니다.

0개의 댓글

관련 채용 정보