-
Youtube API에서 3대 운동 검색 결과 가져오기 #1 - 벤치프레스, 데드리프트, 스쿼트Data Analysis/LifeStyles 2021. 8. 14. 00:58
요즘 유튜브에 운동 관련 콘테츠가 대세다. 실제로 개인적으로도 지기, 까로, 말왕, 이용승, 텐렙스, 헬창, 강경원, 담비, 짐종국 등 수많은 운동 유튜브 채널을 구독하고 있는 중이다. 이러한 콘텐츠를 보다 문득 유튜브에 운동 관련 콘텐츠 특히 요즘 화두가 되고 있는 3대 운동 콘텐츠가 있는지 궁금했다. 그래서 오늘 파이썬으로 Youtube API를 활용해서 3대 운동 콘텐츠 수를 한번 가져오도록 하겠다.
우선 해당 데이터를 가져오기 위해서는 Google API Console의 Youtube API 키 값을 발급받아야 한다. 구글 계정만 있으면 발급받기 굉장히 쉽기 때문에 구글에서 검색하기를 바란다. 코드도 아래와 같이 굉장히 쉽다. 키워드별 모든 영상을 가져오면 좋겠지만, 아직 그런 코드를 짜지 않았기 때문에 우선 키워드별 50개 영상만 가져오도록 하겠다.
from googleapiclient.discovery import build from googleapiclient.errors import HttpError from oauth2client.tools import argparser import pandas as pd DEVELOPER_KEY = "~~~" #유튜브 API 키 값 YOUTUBE_API_SERVICE_NAME = "youtube" YOUTUBE_API_VERSION = "v3" youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,developerKey=DEVELOPER_KEY) keywords=['벤치프레스','데드리프트','스쿼트'] total_counts=dict() data=[] for query in keywords: search_response = youtube.search().list( q = query, order = "viewCount", part = "snippet", maxResults = 50 ).execute() total_counts[query]=search_response['pageInfo']['totalResults'] for i in range(len(search_response['items'])): videoid=search_response['items'][i]['id']['videoId'] stats=youtube.videos().list( part="snippet,contentDetails,statistics", id=videoid ).execute() temp = stats['items'][0]['statistics'] temp['key']= query temp['title']=search_response['items'][i]['snippet']['title'] temp['channel']=search_response['items'][i]['snippet']['channelTitle'] temp['url']= 'https://www.youtube.com/watch?v='+ videoid data.append(temp) df=pd.DataFrame(data) total=pd.DataFrame.from_dict(total_counts,orient='index') total.columns=['videos']
위에서 데이터 프레임으로 만든 df 결과는 다음 이미지와 같다. 조회 수, 좋아요, 싫어요, 댓글, 영상 타이틀, 영상 채널명, 영상 URL 데이터를 볼 수 있다.
Total이라는 변수에는 3대 운동별 영상 수를 저장했다.
3대 운동별 총 영상 수는 아래와 같이 시각화해보았다.
import matplotlib.pyplot as plt %matplotlib inline %config InlineBackend.figure_format='retina' plt.figure(figsize=(20,11)) plt.rcParams["font.family"] = 'Malgun Gothic' plt.rcParams["font.size"] = 15 plt.bar(total.index,total['videos']) plt.title('3대 운동(벤치프레스, 데드리프트, 스쿼트) 유튜브 영상 수',fontsize=20) for x,y in enumerate(list(total['videos'])): plt.text(x, y, y, fontsize=17, color='#ff0000', horizontalalignment='center', verticalalignment='bottom')
역시 내가 예상하던 대로 스쿼트, 데드리프트, 벤치프레스 순으로 나타났다. 역시 운동 난이도 별로 영상 수도 나타난 것으로 보인다. 운동하시는 분들이라면 비슷하게 느끼겠지만 벤치프레스가 그나마 데드리프트와 스쿼트에 비해 가장 쉽고 접근성이 낮은 편이다. 그리고 벤치프레스에 비해서 데드리프트와 스쿼트는 부상 위험도 높기 때문에 사람들의 관심도도 높고, 그러한 수요를 맞추기 위해서 사람들이 스쿼트 관련 영상을 많이 업로드하지 않았을까 추측해본다. 그리고 여성 운동자들은 대부분 벤치프레스보다 스쿼트와 데드리프트를 선호하기 때문에 더더욱 이러한 영상들이 더 나오지 않았나 싶다.
다음에는 3대 운동 별로 전체 영상 정보를 가져와서 한번 시계열적으로 분석을 해보고자 한다.
'Data Analysis > LifeStyles' 카테고리의 다른 글
Google Trends에서 3대 운동(스쿼트, 벤치프레스, 데드리프트) Youtube 검색량 비교 With Python (0) 2021.08.19 서울 열린데이터광장을 통해 버스 정류장 합정역의 승하차 승객 수를 분석해보자~ (0) 2021.08.08 전국 프랜차이즈 빵집(파리바게뜨, 뚜레쥬르) 지점 위치 시각화 (0) 2021.07.08 2021 NBA 파이널 - 야니스 아데토쿤보 없는 밀워키 벅스의 희망 크리스 미들턴(Kris Middleton) (0) 2021.07.06 카카오 지도에서 오레노라멘 맛집 리뷰 파이썬으로 크롤링 & 분석 해보자 (0) 2021.07.02