[파이썬] - 유튜브 API를 활용해서 네고왕 조회, 좋아요, 댓글 수 가져오기
요즘 유튜브에서 가장 핫한 콘텐츠 중에 하나가 바로 네고왕이다. 광희 목소리가 부담스러워서 나는 한 번도 콘텐츠를 시청하지 않았지만 주변에 물어보면 네고왕이 굉장히 인기가 많아 보여서 이번 포스팅에서 해당 유튜브 콘텐츠를 분석해보고자 한다. 우선 네고왕 콘텐츠 리스트를 다 가져와서 영상별로 영상 타이틀, 조회, 좋아요, 싫어요, 댓글 수를 가져와서 테이블화 하도록 하겠다. 코드는 크게 어렵지 않다. 우선 유의할 점은 코드를 작성하기 전에 Youtube API를 발급해야 한다.
네고왕 PlayList Id 값
유튜브 채널에는 각 콘텐츠 별로 특정 ID값이 부여가 된다. 네고왕 콘텐츠를 제작하는 달라스튜디오 채널에도 발명왕, 네고왕 각 콘텐츠 별로 ID값이 있기 때문에 아래 코드를 통해 네고왕 ID 값을 가져오도록 하겠다. 아래 코드를 돌리면 아래 표처럼 달라스튜디오의 플레이리스트 이름과 ID 값을 확인할 수 있을 것이다.
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.tools import argparser
DEVELOPER_KEY = "~" #유튜브 API 키 값
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,developerKey=DEVELOPER_KEY)
search_response = youtube.search().list(
q = "달라스튜디오",
order = "relevance",
part = "snippet",
maxResults = 50
).execute()
channel_id=search_response['items'][0]['id']['channelId']
playlists=youtube.playlists().list(
channelId= channel_id,
part = "snippet",
maxResults=20
).execute()
import pandas as pd
ids=[]
titles=[]
for i in playlists['items']:
ids.append(i['id'])
titles.append(i['snippet']['title'])
df=pd.DataFrame([ids,titles]).T
df.columns=['PlayLists','Titles']
네고왕 영상 LIST
위에서 네공왕 플레이리스트 ID 값을 확인했다면 이걸 통해 플레이리스트에 있는 영상 리스트를 가져오도록 하겠다. 여기서는 우선 영상 타이틀과 유튜브 영상 하나하나에 부여된 영상 ID값을 가져오겠다.
nego=df['PlayLists'][2]
playlist_videos=youtube.playlistItems().list(
playlistId= nego,
part = "snippet",
maxResults=50,
)
playlistitems_list_response = playlist_videos.execute()
video_names=[]
video_ids=[]
date=[]
for v in playlistitems_list_response['items']:
video_names.append(v['snippet']['title'])
video_ids.append(v['snippet']['resourceId']['videoId'])
date.append(v['snippet']['publishedAt'])
vdf=pd.DataFrame([date,video_names,video_ids]).T
vdf.columns=['Date','Title','IDS']
데이터 추출 결과 영상이 총 14개인 점을 확인할 수 있다.
네고왕 영상 Stats(Views, Likes, Dislikes, Comments)
Youtube API에서는 영상의 ID값만 있다면 영상 관련 수치를 다 가져올 수 있다. 영상 수치라고 하면 당연히 조회, 좋아요, 싫어요, 댓글 영상을 보는 유저의 반응 관련 수치라고 볼 수 있다. 네고왕이 엄청 핫하다고 하는데 실제로 영상을 보는 유저들의 반응이 어떤지 보겠다.
import re
category_id=[]
views=[]
likes=[]
dislikes=[]
comments=[]
mins =[]
seconds=[]
title=[]
for u in range(len(vdf)):
request = youtube.videos().list(
part="snippet,contentDetails,statistics",
id=vdf['IDS'][u]
)
response = request.execute()
if response['items']==[]:
ids.append("-")
category_id.append("-")
views.append("-")
likes.append("-")
dislikes.append("-")
comments.append("-")
else:
title.append(response['items'][0]['snippet']['title'])
category_id.append(response['items'][0]['snippet']['categoryId'])
views.append(response['items'][0]['statistics']['viewCount'])
likes.append(response['items'][0]['statistics']['likeCount'])
dislikes.append(response['items'][0]['statistics']['dislikeCount'])
comments.append(response['items'][0]['statistics']['commentCount'])
nego_df=pd.DataFrame([title,category_id,views,likes,dislikes,comments]).T
nego_df.columns=['title','category_id','views','likes','dislikes','comments']
위 코드로 데이터 추출하면 아래와 같은 결과물을 확인할 수 있다. 조회수가 기본적으로 백만 단위고 댓글도 수천 단위인 것을 보아 확실히 핫한 영상인 듯 싶다.
이번 포스팅은 여기까지 하고 다음 영상에는 이번 데이터를 가지고 시각화를 해보도록 하겠다. 끝!
'문송충의 코딩하기 > 파이썬 데이터 분석' 카테고리의 다른 글
[파이썬] - Folium 활용하여 서울시 구 기준 인구수 시각화 하기 (1) | 2020.11.22 |
---|---|
[파이썬] - Youtube API를 활용해서 네고왕 영상 콘멘트 가져오기 (0) | 2020.11.15 |
[파이썬] - 서울시 열린데이터광장 오픈 API 활용해서 서울시 공영주차장 정보를 알아보자 (0) | 2020.11.08 |
[파이썬] - 아마존에서 작성된 삼성 QLED TV 고객 리뷰 분석하기 (1) | 2020.11.07 |
[파이썬] - 아마존에서 삼성 QLED TV 고객 리뷰 크롤링해서 가져오기 (4) | 2020.11.03 |
댓글