서론
평소에 API를 이용하면서도 API가 정확히 어떤 것인지 몰랐는데 정처기 실기 준비하면서 관련 공부를 하기 시작했다. 때마침, 이번주와 다음주 수업과 과제로 API를 이용해야 하는 주제가 나왔다. 교수님께서 R과 트위터 데이터로 감정을 분석해오라고 .... ...... ...그래서 API에 대해 정리하게 되었다.
API/Open API란?
- 송신 시스템의 DB에서 데이터를 읽어서 제공하는 애플리케이션 프로그래밍 인터페이스 프로그램
- API명과 입출력 파라미터 정보가 필요하다.
- 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- API는 어떠한 응용프로그램에서 데이터를 주고받기 위한 방법을 의미한다.
- 어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떠한 방식으로 정보를 요청해야 하는지 그리고 어떠한 데이터를 제공 받을 수 있을지에 대한 규격을 정해놓은 인터페이스이다.
→ 쉽게 말하자면 API란 한 소프트웨어가 다른 소프트웨어의 기능을 사용하기 위해 중간에 존재하는 연결점이라고 보면 된다.
전국 우산 판매 프로그램 개발하고자 한다. 이때 API를 어떻게 이용할까?
- 개발자가 전국 우산 판매 프로그램을 개발할 때 API를 이용해 기상청의 날씨 정보를 가지고 와서 표출 가능하다.
- 개발 중인 전국 우산 판매 프로그램에서 해당 API에 날짜와 지역 정보를 전달
- 해당 API에서 날씨 정보를 응답한다.
- 개발자가 날씨 정보를 표출하도록 지정한 위치에 기상청의 API를 통해 제공 받은 날씨 정보를 표출
그렇다면, RESTful API란...?
- 일정한 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스의 대표적인 방식 중 하나
- 범용적인 사용성을 보장하며, 하나하나 처리하기 힘드니까 약속을 정해서 이걸로 쓰자는 것. 즉, RESTful API는 약속이다.
그러면 OpenAPI가 대체 왜 있을까?
- 웹 사이트에서 자신이 가진 기능을 이용할 수 있게 공개한 프로그래밍 인터페이스
네이버, 카카오, 트위터, 기타 등등... 기업들이 열심히 설계해둔 본인들만의 API를 누구에게나 오픈 하는 이유는 무엇일까?
자사의 API를 다양한 서비스에서 활용하게 만들어서 자사 서비스의 널리 퍼트리도록 하기 위해서이다. 기업은 API를 공개함에 따라 자신의 기업의 이름을 널리 알리고, API를 제공받는 사람들은 잘 만들어져 있는 유용한 API를 이용할 수 있다.
네이버 Open API
네이버의 오픈 API는 네이버 개발자센터에서 이용할 수 있다. 네이버 오픈 API는 네이버 플랫폼의 기능을 외부 개발자가 쉽게 이용할 수 있게 웹 또는 SDK 형태로 공개한 기술들을 말한다.
굉장히 다양한 API를 이용할 수 있다.
네이버 데이터랩에서는 통합검색어 트렌드와 쇼핑인사이트 API를 제공한다.
통합 검색어 트렌드
네이버 통합 검색에서 발생하는 검색어를 연령별, 성별, 기기별로 세분화해서 조회할 수 있는 API
분석하고 싶은 주제군을 설정하면 설정한 주제군에 대해 기간을 일간, 주간, 월간 단위로 조회하는 등 세분화된 정보를 확인할 수 있다.
쇼핑인사이트
네이버 통합검색의 쇼핑 영역과 네이버쇼핑 서비스의 검색 결과에서 사용자가 클릭한 데이터를 조회할 수 있다. 소상공인에게 도움을 주기 위해 개발되었다.
→ 통합 검색어 트렌드와 쇼핑인사이트 API는 RESTful API이고, 비로그인 방식 OpenAPI 이다. 그러므로, API를 호출할 때 HTTP 요청 헤더에 클라이언트 아이디와 클라이언트 시크릿 값만 전송하면 이용가능하다.
또한, 네이버가 현재 개발 및 서비스 중인 인공지능 플랫폼 CLOVA와 PAPAGO API 역시 이용이 가능하다.
트위터 Open API
트위터에서는 전 세계에서 일어나고 있는 일과 사람들이 어떤 것에 대해 핫하게 떠들고 있는지를 실시간으로 확인할 수 있다.
트위터 데이터는 사용자가 공개적으로 공유하기로 선택한 정보를 반영하므로 대부분의 다른 SNS에서 공유되는 데이터와 달리 고유하다. 또한, 사용자가 자신의 비공개 트위터 정보(비계)를 관리하고 이러한 정보를 승인된 개발자에게 제공할 수 있는 API도 지원한다.
즉, 트위터에서는 쪽지 엔드 포인트를 통해 특정 애플리케이션에 명시적으로 권한을 부여한 사용자의 쪽지 대화를 이용할 수 있다.
이를 이용하면, 비즈니스용으로 소유 또는 관리하는 계정의 경우 봇 기반 대화 서비스를 만들 수 있다.
또한, 트위터 API를 이용해서 트위터의 데이터들을 크롤링할 수 있다.
트위터의 OpenAPI는 소프트웨어 애플리케이션에서 엔드 포인트를 호출하면(트위터에서 제공하는 특정 유형의 정보에 연결하는 주소) 일부 트위터 서비스에 액세스할 수 있다.
API키 생성 및 코드 참고: https://hleecaster.com/twitter-api-developer/
근데 API 개발자 승인을 받으려면.... 영어로 자세히 써서 내고 기다려야 한다고 한다.
....
대충 보고 짧게 써서 냈는데 아마 반려될 듯 하다. 그럼 ..다시 써서 내야 한다. 굉장히 귀찮게 바꼈다. 트위터 놈들...
그래서 일단 교수님 키를 훔쳐서 쓰기로 한다.
교수님은 R언어로 분석하라고 했다. 하지만 나는 청개구리
참고: json을 csv로 변환하기
import csv
import json
input_file_name = "data.txt"
output_file_name = "data.csv"
with open(input_file_name, "r", encoding="utf-8", newline="") as input_file, \\
open(output_file_name, "w", encoding="utf-8", newline="") as output_file:
data = []
for line in input_file:
datum = ujson.loads(line)
data.append(datum)
csvwriter = csv.writer(output_file)
csvwriter.writerow(data[0].keys())
for line in data:
csvwriter.writerow(line.values())
키워드가 포함된 트윗을 실시간으로 json 형태로 수집하는 코드 작성
import json
import twitter
from collections import Counter
import requests
# key 정보
twitter_api = twitter.Api(consumer_key=twitter_consumer_key,
consumer_secret=twitter_consumer_secret,
access_token_key=twitter_access_token,
access_token_secret=twitter_access_secret)
import json
query = ["사과"]
output_file_name = "stream_result.txt"
with open(output_file_name, "w", encoding="utf-8") as output_file:
stream = twitter_api.GetStreamFilter(track=query)
while True:
for tweets in stream:
tweet = json.dumps(tweets, ensure_ascii=False)
print(tweet, file=output_file, flush=True)
OpenAPI를 이용하면 서비스 개발 시간 단축과 서비스의 개인화, 적은 시간과 비용으로 다양한 서비스 개발 등이 가능해진다.
[참고]
https://brunch.co.kr/@eunmee910/44
수제비 정보처리기사 실기
그 외 참고는 링크 첨부
'기타' 카테고리의 다른 글
IT 5분 잡학사전 노마드코더 챌린지 1 DAY (0) | 2024.07.26 |
---|---|
마이데이터 이야기 (0) | 2023.02.03 |
디지털 치료제의 장점과 쓰임새 (0) | 2022.11.30 |
[R] KoNLP 설치 에러 (0) | 2022.04.17 |
NFT (0) | 2022.02.25 |
댓글