YouTubeの動画分析に関心がある方々、特にPythonを使ってYouTube APIでデータを収集し分析する方法について学びたい初心者や中学生向けに、このブログは書かれています。本記事では、YouTube APIを利用して特定のキーワードに基づく動画のデータを収集し、その結果を分析するPythonプログラムについて解説します。
・YouTube APIを使ってデータを収集する方法がわからない。
・Pythonでのデータ処理の手順が理解できていない。
・効率的にYouTube動画の分析を行う方法を探している。
こんな疑問に答えます。
・YouTube APIの基本的な使い方を理解できる。
・Pythonを用いたデータ収集と処理のスキルが身につく。
・YouTube動画の分析で重要なデータを抽出し、分析する方法を学べる。
YouTubeで実際にChatGPTを使用して作成する様子を公開しているので、興味がありましたらご覧ください。
第1章:YouTube APIとは
YouTube APIは、YouTubeのデータにアクセスして取得するためのツールです。このAPIを使用することで、動画のタイトル、視聴回数、動画の長さなど、多様なデータをプログラムを通じて収集することが可能になります。
1.1 YouTube APIの基本
YouTube APIは、YouTubeの豊富なコンテンツへのアクセスを提供するプログラムインターフェースです。これを使用することで、動画の検索、アップロード、再生リストの管理など、さまざまな機能をプログラムから利用できます。
- APIの役割: YouTubeのデータにアクセスし、プログラムで操作するためのインターフェースを提供。
- 利用例: 動画検索、データ収集、動画のアップロード、チャンネル管理など。
1.2 APIの利用準備
YouTube APIを利用するには、いくつかの初期設定が必要です。これには、Google Cloud PlatformでのAPIキーの取得や、YouTube Data API v3の有効化が含まれます。
- Google Cloud Platformのアカウント作成: Google Cloud Platformにアクセスし、アカウントを作成します。
- プロジェクトの作成: 新しいプロジェクトを作成し、YouTube Data API v3をプロジェクトに追加します。
- APIキーの取得: プロジェクトでAPIキーを生成し、このキーを使用してAPIにアクセスします。
YouTube APIを使用するためには、下記サイトより設定してください。
https://console.cloud.google.com/
実際のスクリーンショットがこちらです。APIとサービス、ライブラリに入ります。
YouTube DATA API v3を選択
APIの有効化してください。下図のようにAPIが有効ですとなればOK
タブから有効なAPIとサービスを選択
YouTube Data API v3が表示されていれば問題ないです。
次にAPIキーを取得します。認証情報を選択します。
APIキーを取得していない場合は、認証情報を作成、APIキーを選択。
APIキーが生成されます。これでAPIキーの作成が完了です。コピーしておきましょう。
1.3 APIの利用制限と注意点
YouTube APIの利用にはいくつかの制限があります。これらは主に、クォータ制限や使用規約に関連しています。
- クォータ制限: APIの使用はクォータによって制限されており、過度のリクエストは制限される可能性があります。
- 使用規約の遵守: YouTubeの使用規約に従ってAPIを使用する必要があります。違反するとアクセスが制限される可能性があります。
1.4 APIの主な機能
YouTube APIは多岐にわたる機能を持っています。主な機能には以下のようなものがあります。
- 動画検索: 特定のキーワードや条件に基づいて動画を検索する。
- データ取得: 動画のタイトル、説明、統計情報などのデータを取得する。
- アップロードと管理
1.5 実践的な使用例
実際にYouTube APIを使用する一例として、特定のキーワードに関連する動画の情報を収集するプログラムが考えられます。このようなプログラムは、市場調査やコンテンツのトレンド分析などに役立ちます。
- 市場調査: 特定の製品やトピックに関連する動画の人気度を分析。
- トレンド分析: ある時点での人気動画やトピックの傾向を把握する。
この章では、YouTube APIの基本概念、利用方法、機能、実践的な使用例について説明しました。これにより、YouTube APIの基本的な理解を深めることができます。次の章では、具体的なPythonプログラムの概要について詳しく見ていきます。
第2章:Pythonプログラムの概要
このプログラムでは、YouTube APIを利用して特定のキーワードに基づく動画を検索し、それらのデータを処理する一連のステップを踏みます。
- APIクライアントの設定:
googleapiclient.discovery
ライブラリを利用してYouTube APIクライアントを設定。 - 検索条件の定義: 検索キーワード、期間、その他のパラメータを指定。
- APIリクエストとレスポンス: 検索条件に基づいてAPIリクエストを行い、レスポンスを受け取る。
- データの抽出と加工: レスポンスから必要な動画情報を抽出し、加工する。
2.2 データの処理
収集したデータは、分析や表示に適した形に加工する必要があります。このプロセスには、データの解析、フィルタリング、変換などが含まれます。
- 時間の変換: ISO 8601形式の時間データを秒単位に変換する関数
parse_duration
を使用。 - データフィルタリング: 条件(例:動画の長さが15分以上)に基づいてデータをフィルタリング。
- 情報の抽出: 各動画からタイトル、視聴回数、動画長、動画IDなどの情報を抽出。
2.3 プログラムの実装のポイント
プログラムを実装する際には、以下のポイントに注意してください。
- APIキーの保護: APIキーはセキュリティ上の理由から外部に漏れないように保護する必要があります。
- エラーハンドリング: APIリクエストは失敗する可能性があるため、適切なエラーハンドリングを実装する。
- レスポンスデータの検証: APIからのレスポンスデータが予想通りの形式かどうかを検証する。
2.4 プログラムの応用
この基本的なプログラムは、さまざまな方法で応用や拡張が可能です。
- 検索条件の変更: 異なるキーワードや期間での検索を行い、様々なデータセットを生成。
- データの追加分析: 取得したデータに対して更なる統計的分析やビジュアライゼーションを適用。
2.5 実践例
私の経験から、このようなプログラムは、特定のトピックやトレンドに関するYouTube動画の人気を分析するのに特に有効です。例えば、最近の「ChatGPT」に関する動画のトレンドを分析するために、このプログラムをカスタマイズして使用しました。その結果、特定の期間における「ChatGPT」関連動画の視聴傾向や人気の動画を特定することができました。
この章を通じて、YouTube APIを使用したPythonプログラムの基本的な流れ、データ処理の手順、プログラムの実装ポイントについて理解を深めることができます。次の章では、データの収集と解析に焦点を当て、具体的な手法を詳しく見ていきます。
第3章:データの収集と解析
この章では、YouTube動画のデータを収集し、解析するプロセスとそれに関連するプログラムの内容について詳しく説明します。Pythonを使用したデータ収集と解析は、特定のキーワードに関連するYouTube動画の特性やトレンドを理解する上で非常に重要です。
3.1 データ収集プログラムの構築
データ収集は、YouTube APIを通じて行われ、以下のステップで構成されます。まず google-api-python-client ライブラリをインストールする必要があります。以下は、このライブラリのインストールと基本的な使用方法です。
pip install google-api-python-client
3.1.1 YouTube APIクライアントの設定
まず、googleapiclient.discoveryを用いてYouTube APIクライアントを設定します。これにはAPIキーが必要です。
from googleapiclient.discovery import build
api_key = 'YOUR_API_KEY'
youtube = build('youtube', 'v3', developerKey=api_key)
3.1.2 検索リクエストの定義
次に、検索キーワード、期間、最大結果数を指定し、検索リクエストを定義します。
import datetime
search_keyword = 'ChatGPT'
start_date = datetime.datetime(2023, 12, 10).isoformat() + 'Z'
end_date = datetime.datetime(2024, 1, 10).isoformat() + 'Z'
request = youtube.search().list(
q=search_keyword,
part='snippet',
maxResults=50,
publishedAfter=start_date,
publishedBefore=end_date,
type='video'
)
response = request.execute()
3.1.3 データの抽出と加工
取得したレスポンスから、必要な動画情報を抽出し、加工します。
videos = []
for item in response.get('items', []):
video_id = item['id']['videoId']
video_request = youtube.videos().list(
part="snippet,contentDetails,statistics",
id=video_id
)
video_response = video_request.execute()
3.2 データ解析プログラム
収集したデータを解析するために、動画の長さの解析や視聴回数に基づく分析を行います。
3.2.1 動画の長さの解析
動画の長さを秒数に変換する関数を用いて、特定の長さの動画をフィルタリングします。
import re
def parse_duration(duration):
match = re.match('PT(\d+H)?(\d+M)?(\d+S)?', duration).groups()
hours = int(match[0][:-1]) if match[0] else 0
minutes = int(match[:-1]) if match else 0
seconds = int(match[:-1]) if match else 0
return hours * 3600 + minutes * 60 + seconds
for video in video_response.get('items', []):
duration = parse_duration(video['contentDetails']['duration'])
if duration >= 900: # 15分以上の動画
title = video['snippet']['title']
view_count = video['statistics']['viewCount']
videos.append((title, view_count, str(datetime.timedelta(seconds=duration)), video_id))
3.2.2 視聴回数に基づく分析
収集した動画の視聴回数を基に、人気の動画を特定します。
videos.sort(key=lambda x: int(x), reverse=True)
3.3 データの活用と応用
収集・解析したデータは、トレンドの特定やコンテンツ戦略の策定に役立ちます。また、統計分析やビジュアライゼーションを通じて、さらに深い洞察を得ることが可能です。
3.4 実践例
このプログラムを実際に使用し、「ChatGPT」に関連するYouTube動画のトレンドや人気の動画を分析した経験があります。この分析を通じて、視聴者の関心の変化や人気のコンテンツの特徴を把握することができました。
この章では、YouTube動画データの収集と解析のプロセスとそれに関連するプログラムの内容について詳しく説明しました。次章では、収集したデータをCSV形式で出力し、さらに活用する方法について見ていきます。
第4章:CSV出力と活用
収集したYouTube動画データを効果的に活用するためには、CSV(コンマ区切り値)形式での出力が鍵となります。この章では、Pythonを使用してデータをCSVファイルに出力し、それを活用するプロセスと具体的なプログラムコードを紹介します。
4.1 CSV出力の重要性
CSVファイル形式でのデータ出力は、以下の理由で重要です。
- 互換性: 多くのデータ処理ツールがCSVフォーマットをサポートしているため、様々なツールでデータを活用できます。
- 編集の容易さ: テキストエディタや表計算ソフトで簡単に編集や閲覧が可能です。
4.2 CSVファイルへのデータ出力
以下は、収集したYouTube動画データをCSVファイルに出力するプログラムのコードです。
import csv
# CSVファイルに書き込む
with open('youtube_videos.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Title', 'View Count', 'Duration', 'Video ID'])
for video in videos:
writer.writerow(, video, video, video])
このコードは、先に収集した動画データ(videos
リスト)をyoutube_videos.csv
という名前のCSVファイルに保存します。各行には動画のタイトル、視聴回数、長さ、動画IDが含まれます。自分で取得したいものを設定してください。
4.3 実践例と経験
私の経験では、このCSV出力方法を使用して、特定のトピックに関連するYouTube動画のデータセットを作成し、後でデータ分析ツールでさらに詳細な分析を行いました。これにより、視聴者の関心やトレンドの変化をより深く理解することができました。
4.4 CSVデータの拡張可能性
CSV形式で保存されたデータは、他のデータセットと組み合わせたり、機械学習モデルのトレーニングデータとして使用するなど、さまざまな形での応用が可能です。
この章では、Pythonを用いてYouTube動画データをCSVファイルに出力し、そのデータをどのように活用できるかについて説明しました。次章では、このプログラムの応用と拡張の可能性について掘り下げていきます。
4.5 プログラム全文
最後の今回使用したプログラム全文を記載します。実際に使用してください。今回の内容はYouTubeの動画の内容から、データを取得する方法になっています。別のブログで紹介している、Faster Whisperなどを使用すると、動画の要約をすることもできるので是非使用してみてください。
下記パラメータを自分の環境・検索条件に合わせて修正してください。
・API_key
・search_keyword
・start_date
・end_date
from googleapiclient.discovery import build
import datetime
import re
import csv
# ISO 8601形式の時間を秒に変換する関数
def parse_duration(duration):
match = re.match('PT(\d+H)?(\d+M)?(\d+S)?', duration).groups()
hours = int(match[0][:-1]) if match[0] else 0
minutes = int(match[:-1]) if match else 0
seconds = int(match[:-1]) if match else 0
return hours * 3600 + minutes * 60 + seconds
# APIキーとYouTube APIのビルド
api_key = 'Your API Key'
youtube = build('youtube', 'v3', developerKey=api_key)
# 検索パラメータ
search_keyword = 'ChatGPT'
start_date = datetime.datetime(2023, 12, 10).isoformat() + 'Z' # 開始日時
end_date = datetime.datetime(2024, 1, 10).isoformat() + 'Z' # 終了日時
# 検索リクエストとレスポンス
request = youtube.search().list(
q=search_keyword,
part='snippet',
maxResults=50,
publishedAfter=start_date,
publishedBefore=end_date,
type='video'
)
response = request.execute()
# 結果の抽出
videos = []
for item in response.get('items', []):
video_id = item['id']['videoId']
video_request = youtube.videos().list(
part="snippet,contentDetails,statistics",
id=video_id
)
video_response = video_request.execute()
for video in video_response.get('items', []):
duration = parse_duration(video['contentDetails']['duration'])
if duration >= 900: # 15分以上の動画
title = video['snippet']['title']
view_count = video['statistics']['viewCount']
videos.append((title, view_count, str(datetime.timedelta(seconds=duration)), video_id))
# 視聴回数でソート
videos.sort(key=lambda x: int(x), reverse=True)
# 結果の表示とCSV出力
with open('youtube_videos.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Title', 'View Count', 'Duration', 'Video ID'])
for video in videos:
print(video)
writer.writerow(video)