본문 바로가기
문송충의 코딩하기/파이썬 데이터 분석

슈카월드 유튜브 채널 파이썬으로 분석하기

by 동장군님 2020. 8. 19.
728x90

유튜브에서 가장 애청하고 있는 슈카월드 채널에 대해 파이썬으로 분석해보도록 하겠다. 저번 시간과 동일하게 Youtube에서 제공하고 있는 API 키 값을 사용해서 슈카월드 채널 내 동영상 수 현황을 알아보도록 하겠다. 오늘 이 분석을 바탕으로 상세한 코멘트 수, 조회수, 좋아요 수 등 상세한 지표 데이터 추출을 다음 시간에도 이어갈 수 있도록 하겠다. 그럼 바로 코딩으로 넘어가도록 하겠다.

 

 


1. 슈카월드 채널 ID 값 구하기

우선 슈카월드 채널의 ID 값을 구해야 하는데, 이는 저번 시간에서 활용한 Youtube API 내 Search 함수를 사용하면 얻을 수 있다.  슈카월드 검색했을 때 결과 데이타 중 가장 먼저 나오는 값이 바로 채널 관련 정보일 것이다. 딕셔너리 데이터 타입을 아래 마지막 코드 줄처럼 풀어서 추출하면 슈카월드 채널 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']

 

 

 

2. 슈카월드 채널 내 재생목록 List 구하기

위에서 구한 채널 ID를 Youtube API playlists 함수에서 활용하면 아래 Output과 같이 15개의 재생목록을 구할 수 있다.

playlists=youtube.playlists().list(
    channelId= channel_id,
    part = "snippet",
    maxResults=20
).execute()

import pandas as pd
playlist_titles=[]
playlist_ids=[]
for i in playlists['items']:
    playlist_titles.append(i['snippet']['title'])
    playlist_ids.append(i['id'])

df=pd.DataFrame([playlist_titles,playlist_ids]).T

df.columns=['playlist','playlist_id']

 

 

3. 재생목록에 있는 동영상의 제목과 Video ID 긁어오기

Youtube API 내에는 재생목록에 있는 동영상을 다 가져오는 playlistitems 함수를 제공하고 있다. 그래서 반복문을 활용해서 재생목록 15번을 돌려 슈카월드에 있는 동영상 전체를 가져오도록 하겠다. 그리고 여기서 추출한 Video ID 값을 활용해서 다음 시간에 슈카월드 동영상의 조회 수, 좋아요 수, 댓글 수 등 상세 데이터를 뽑도록 하겠다. 

 

코드 자체가 전반적으로 비슷하다. Dictionary로 추출한 데이터를 잘 보고 풀어야 된다. 아래와 같이 코드를 돌리면 총 661개의 동영상 목록을 확인할 수 있을 것이다.

video_ids=[]
video_titles=[]
video_dates=[]

for av in df['playlist_id']:
    playlist_videos=youtube.playlistItems().list(
        playlistId= av,
        part = "snippet",
        maxResults=50,
    )
    while playlist_videos:
        playlistitems_list_response = playlist_videos.execute()

    # Print information about each video.
        for playlist_item in playlistitems_list_response["items"]:
            title = playlist_item["snippet"]["title"]
            video_id = playlist_item["snippet"]["resourceId"]["videoId"]
            video_ids.append(video_id)
            video_titles.append(title)

        playlist_videos = youtube.playlistItems().list_next(
        playlist_videos, playlistitems_list_response)
        
video_df=pd.DataFrame()
video_df['Title']=video_titles
video_df['Video Id']=video_ids

 

슈카 형이 벌써 661개 동영상을 올렸더니 장난 아니다. 초반에 게임 영상을 제외하고는 슈카 형 영상을 거의 다 본 것 같다. 솔직히 거의 모든 영상이 다 재밌고 유익하니 많은 분들이 특히 주식, 경제에 관심을 가지고 있으면 슈카 형 채널을 필수다. 꼭 보길 바란다. 여기서 이 정도로 마치고 나중에 더 상세한 분석으로 찾아오겠다.  

728x90
반응형

댓글