GAS

【GAS】YouTubeのチャンネルID取得方法を徹底解説

thumbnail
n-mukineer
えぬ
えぬ

こんにちは、えぬ(@nmukineer)です。

今回はGASを使って簡単なWebスクレイピングを行いました。例としてYouTubeのチャンネルページから、チャンネルID情報を取得するスクリプトをを書いてみましたので紹介します!

GASのプロジェクト作成方法については以下の記事を参考にして下さい。

あわせて読みたい
【無料】GASを使い始めるための3ステップ【簡単】
【無料】GASを使い始めるための3ステップ【簡単】

Parserライブラリのインポート

GASでWebスクレイピングを行うには、Parserライブラリを使用すると便利です。

ライブラリの「+」ボタンを押す
ライブラリのスクリプトIDを入力する

スクリプトIDを入力して検索します。下記のIDを入力し、「検索」を押します。

1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw
バージョンを確認して追加する

以上でParserライブラリのインポートは完了です!

GASスクリプト

ページのHTMLを取得する

今回は、なかやまきんに君さんのYouTube 2ndチャンネルである「ザ・きんにくTV 2nd 【The Muscle TV 2nd】」のチャンネルIDを取得します。

スクレイピングを行う第一歩として、ページのHTMLを以下のコードで取得します。

  const channelUrl = 'https://www.youtube.com/@themuscletv2nd';
  const html = UrlFetchApp.fetch(channelUrl).getContentText('UTF-8');

Parserで特定の要素を抽出する

今回抽出したいチャンネルIDの情報は、RSS要素として埋め込まれています。

<link rel="alternate" type="application/rss+xml" title="RSS" href="https://www.youtube.com/feeds/videos.xml?channel_id=UCnHzm--hwx96P9D3Rnbe3LQ">

https://www.youtube.com/feeds/videos.xml?channel_id=チャンネルID

というようになっているので、上記のRSS要素のhrefを抽出することでチャンネルIDを取得することができます。

ちなみに、ブラウザで目視確認したい場合はチャンネルページを開いてF12キー(Chromeの場合)を押し、「Ctrl+F」で検索Windowを出して「rss+xml」で検索すると見つかります。

Chromeの開発者モードでHTMLを見ることができる

では、Parserを使ってRSS要素を取り出してみます。

Parserは、下記のようにfrom(), to()を使うことで対象文字列の中から、指定した文字列に挟まれた範囲の文字列を取得することができます。build()は抽出実行メソッドであり、戻り値はString型(テキスト)が返ってきます。

また、開始文字列と終了文字列の組み合わせが複数、抽出対象文字列に入っている場合は、最初にヒットした部分のみが返されるので注意が必要です(複数ある場合はiterate()を使用すると良いようです)

Parser.data('抽出対象文字列').from('開始文字列').to('終了文字列').build()

今回は、title="RSS" href=">に挟まれた

https://www.youtube.com/feeds/videos.xml?channel_id=UCnHzm--hwx96P9D3Rnbe3LQ

の部分を抽出したいので、以下のようにしました。

const text = Parser.data(html).from('title="RSS" href="').to('">').build();

この時点で、変数textには、

https://www.youtube.com/feeds/videos.xml?channel_id=UCnHzm--hwx96P9D3Rnbe3LQ

という文字列が入っているので、channel_id=の後ろの部分がチャンネルIDです。ここを取り出すために、さらにsplit関数を使って、

text.split('=')[1]

とすると、チャンネルIDが取得できます。

GASスクリプト

こちらが今回作成したGASスクリプトです。かなりシンプルに書くことができました。

main関数を実行することで、channelUrlに指定したチャンネルページから、チャンネルIDを取得することができます。

function main() {
  const channelUrl = 'https://www.youtube.com/@themuscletv2nd';
  const channelId = getYouTubeChannelId(channelUrl);
  
  console.log(`チャンネルID: ${channelId}`);
}

function getYouTubeChannelId(channelUrl) {
  const html = UrlFetchApp.fetch(channelUrl).getContentText();
  const text = Parser.data(html).from('title="RSS" href="').to('">').build();
  const channelId = text.split('=')[1];
  return channelId;
}

実行結果

チャンネルIDが取得できた

まとめ

GASで簡単なWebスクレイピングを行ってみました!GASは環境構築も不要で、Parserライブラリが用意されており簡単に目的の要素が抽出できるようになっていますので、スクレイピングをやってみたい方にはおすすめだと思います。

お読みいただきありがとうございました!

このブログを書いている人
えぬ
えぬ
N日後にムキムキになるエンジニア
WebアプリエンジニアとしてIoTシステムを開発中。30代折り返し。 趣味(モノづくり、プログラミング、筋トレ)や子育てのことを主に記事にします。 TOEIC: 900点/第一級陸上無線技術士/第3種電気主任技術者/技術士一次試験合格/基本情報技術者/第2種電気工事士/デジタル技術検定2級(情報・制御)
記事URLをコピーしました