brunch

You can make anything
by writing

C.S.Lewis

by 기획자 연주리 Oct 18. 2021

"나도 API 안다고!" 2: 재밌는 API 실습하기

기획자를 위한 API 실습 3가지

보는 것이 하는 것보다 재밌을 수가 없지



실습의 중요성


개념을 이해했으면 문제를 풀 차례입니다. 중고등학생 때 열심히 풀었던 수학 문제집도 개념 원리 파트와 문제 풀이 파트로 나뉘어있죠. 선생님이 개념을 설명하실 땐 이해한 것 같았는데, 혼자 문제를 풀 땐 자주 막히곤 했어요. 듣는 것보단 직접 하는 것이 더 어렵지만 재미있고, 진짜 공부에 가깝습니다.


그래서 파이썬으로 네이버 Open API를 이용해 보는 실습 2개와 벡델 테스트 API 실습 1개를 준비했어요. 만약 파이썬을 사용할 수 있는 툴이 없다면 웹 서비스 Postman으로 안내하는 이 브런치의 가이드를 따라해보세요.


네이버의 경우 네이버 developers 사이트에 API 코드가 다 나와있어서 복사 붙여 넣기만 하면 끝입니다. 복붙만 하면 공부가 안 되니까 코드 각 줄이 어떤 역할을 하는지까지 정리했어요. 실습에 참고해 보세요.



Sample 1.

[네이버 Open API] 한국 이름 영문화 API



한국어 이름을 넣으면 영어로 바꾸어주는 API입니다. (파이썬 API 코드)


먼저, 네이버의 Open API를 사용하기 위해선 ID와 PW 정보가 필요합니다. 네이버 애플리케이션 등록 신청을 통해 ID/PW를 받을 수 있습니다. (가이드) 저는 Sample 1과 2를 위해 "한글인명-로마자변환"과 "데이터랩 (검색어트렌드)" API를 추가했습니다.


네이버 API 사용 신청 (ID/PW 받기)


파이썬 API 코드를 복사해서 붙어 넣습니다.(저는 Spyder라는 프로그램을 썼어요.) 먼저 client_id와 client_secret에 위에서 발급받은 ID와 PW를 적습니다. ID/PW는 "내 애플리케이션"에 들어가면 확인할 수 있습니다.


제 이름을 번역해보기 위해 파라미터의 값에 제 이름을 넣었습니다. 파라미터가 하나뿐이라 간단합니다.


[Request] 네이버 한글인명-로마자변환 API 코드


코드를 실행해보니 여러 가지 번역 안이 제공됩니다. 자체 점수가 가장 높은 "Lee Yeonju"가 먼저 나오고, 점수가 가장 낮은 "Lee Yeunjoo"가 마지막으로 제공되었네요.


[Response]


간단하긴 하지만 별로 재미가 없는 결과였어요. 다음 API를 넘어가 볼까요.



Sample 2.

[네이버 Open API] "스우파" 네이버 검색 트렌드 보기



네이버는 검색 트렌드 API를 제공합니다. (파이썬 API 코드)


다만 실제 검색 횟수를 알 수는 없고 검색량의 상대적 비율만 알려줍니다. 참고로 이 API는 파라미터가 2개 이상으로, 검색 기간, 키워드, 성별과 같은 여러 가지 조건을 걸 수 있습니다.

파라미터


파이썬 API 코드를 복사해서 붙여 넣습니다. 위 예시와 마찬가지로 인증 정보(ID/PW)를 추가하고, body에서 조건을 지정합니다. 저는 스우파 방송 시작 전인 8/15부터 가장 최근인 10/15까지 여성의 daily 검색 트렌드를 조건으로 넣었어요. 스우파를 검색하는 키워드는 "스우파", "스트릿우먼파이터"로 정했습니다.


[Request] 네이버 검색 트렌드 API 코드


참고로 코드를 살펴보면 위의 이름 번역 API와 달리 파라미터를 URL에 붙여 쓰지 않고 바디에 별도로 추가합니다. 이는 파라미터의 조건이 많기 때문입니다.


<잠깐> 파라미터와 바디의 차이는?

- 파라미터: 경로 파라미터와 쿼리 파라미터 등이 있음. URL에 붙여서 특정 경로를 찾아가거나 어떤 글자가 포함된 데이터를 찾는다는 식으로 이용. 주로 get 메소드에서 사용함.
- 바디: 더 복잡한 조건으로 데이터를 받아올 수 있음. URL이 길어지는 것을 방지. 주로 put, post 메소드에서 사용함.


결과를 보니, 먼저 저의 설정값을 보여주고 날짜별 검색율 값을 나열합니다.


[Response]


이 데이터를 긁어서 엑셀에서 그래프로 만들었어요. 6회 차 방영 주의 화제성이 가장 높았네요. 결방 주엔 관심이 떨어진 것을 확인할 수 있습니다. 주별 트렌드를 보자면, 방영일인 화요일과 다음날인 수요일에 검색율이 가장 높고, 나머지 요일은 비등비등하게 낮은 수준입니다.


데이터 랩 API로 정보를 가져온 결과



Sample 3.

벡델 테스트에 통과한 연도 별 영화 수 트렌드



평소 관심 있던 벡델 테스트의 API가 있어서 실습에 써보기로 했습니다. (API 문서)


벡델 테스트란?

✏️ 벡델 테스트 (bechdel test)
- 영화 속 성차별을 알기 위해 앨리슨 벡델이 고안한 테스트입니다.
- 이 테스트를 통과하기 위한 최소 요건은 3가지입니다.
    1) 이름을 가진 여성 캐릭터를 최소 2명 포함할 것
    2) 서로 이야기를 나눌 것
    3) 남성에 대한 것 이외에 다른 대화를 나눌 것



1) 데이터 불러오기 (requests)


영화 제목 키워드로 벡델 테스트 결과, 영화 ID 등의 정보를 불러오는 URL입니다. encText에 원하는 텍스트를 넣어 검색할 수 있습니다. 샘플로 "matrix"를 넣었습니다.


<Request 코드>

import requests encText = "matrix"
 
url = "http://bechdeltest.com/api/v1/getMoviesByTitle?title=" + encText
response = requests.get(url)

print(response.json())


<Response 결과>

json 형태의 데이터


JSON 형태로 "matrix"가 제목에 있는 모든 영화의 데이터가 표시됩니다. 하지만 눈에 잘 안 들어오니까 표로 바꾸어서 볼까요. 여기서부터 필수는 아닙니다.



2) 결과를 표로 만들어서 보기 (pandas)


<코드>

pandas는 데이터 시각화 기능을 제공하는 파이썬 라이브러리입니다. pandas를 처음 사용한다면 먼저 설치하는 과정이 필요합니다. (설치 방법)


import requests import pandas as pd #이거 추가됨

encText = "matrix"
url = "http://bechdeltest.com/api/v1/getMoviesByTitle?title=" + encText

df = pd.read_json(url) #이거 추가됨
print(df) #이거 수정됨


<결과>

matrix가 제목에 들어가는 영화는 총 4개가 있고, 모두 벡델 테스트를 통과했습니다. (visible = 1)

Response



3) csv 파일로 추출해서 보기 (to_csv)


마지막으로 벡델 테스트에 통과한 연도별 영화 수를 볼 차례입니다. 모든 데이터를 보는 API URL인 "getAllMovies"를 넣었습니다. Pandas도 그래프 시각화 기능을 제공하지만, API를 많이 호출하면 서버에 부담이 된다고 하니 파일로 저장해서 볼까요?


<코드>

df.to_csv( ) 괄호 사이에 파일을 저장하고 싶은 경로와 파일명을 적습니다. Index와 header로 첫 번째 열과 행의 값을 가져올 것인지 결정할 수 있습니다.


import requests
import pandas as pd

url = "http://bechdeltest.com/api/v1/getAllMovies"
 
df = pd.read_json(url)
df.to_csv (r'/Users/yunjoo/Desktop/export_dataframe_2.csv', index = False, header=True) #이거 추가됨


<결과>

바탕화면에 csv 파일이 예쁘게 저장됩니다. 파일을 누르면 우리에게 익숙한 엑셀이 열립니다.

엑셀에서 연도별 그래프를 그렸어요.


벡델 테스트를 통과한 영화의 수


2014년과 2016년에 약 250만 편으로 가장 높은 값을 기록하다 최근은 떨어지는 추세입니다. 코로나로 인해 영화 제작 건수 자체가 줄며 벡델 테스트를 통과한 영화의 수도 떨어지고 있습니다. 정확한 트렌드는 매해 제작된 전체 영화 대비 벡델 테스트에 통과한 영화의 비율로 봐야 하지만 아쉽게도 현재의 벡델 테스트 API로는 그런 데이터를 받을 수 없습니다.



실습을 따라 해 보셨나요? 아니면 더 재밌는 데이터를 만져보실래요? Rakuten Rapid API는 재미있는 API만 따로 모아서 보여줘요. 영어를 요다의 말로 바꿔주는 API도 있네요. 기왕 실습하는 김에 더 재미있는 API를 테스트보는 건 어떠세요. ;)


Rakuten Rapid API


저는 이렇게 해보면서 API와 조금 더 친해진 것 같아요. 업무에 쓰이는 API 문서도 금방 이해할 거란 기대를 안고 가실 수 있기 바랍니다. 실습을 따라 하다 궁금하거나 이상한 부분이 있었다면 댓글 남겨주세요.


이 글이 도움이 되었길 바라며, 다음 글에서 또 만나요! :)


시리즈의 이전 글:


*직접 공부를 하며 정리한 내용으로, 정확하지 않은 내용에 대해 피드백을 주시면 귀 기울여 듣겠습니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari