【Python】SeleniumでYouTubeをスクレイピングした(サンプルコード付き)

どうも、カメ助(@kamesuke_blog)です。

そこで今回はSeleniumを使用してYouTubeを「スクレイピング」するプログラムを紹介します。(windows環境)

前半でサンプルコードを紹介し、後半でサンプルコードの内容を解説します。

カメ助

この記事はこんな人にオススメ
・YouTubeの「スクレイピング」の仕方が知りたい
・「スクレイピング」のサンプルコードがほしい

皆さんがスクレイピングする際の参考になれば幸いです。

目次

スクレイピングのサンプルコード

サンプルコードを紹介します

YouTubeのデータの内、スクレイピングで取得するものとしては「タイトル」、「動画のURL」が挙げられます。

そこで今回は、YouTubeの急上昇(音楽)の動画タイトル・動画のURLをCSVファイルに書き出すコードを紹介します。(画面の操作はSeleniumを使用しています。)

処理の流れ

サンプルコードの処理は以下の流れで行います。

  1. YouTubeの急上昇のサイトにアクセスする
  2. YouTubeの急上昇のサイト内の「音楽」タブをクリックする
  3. ページの情報を取得する
  4. 取得結果をCSVファイルに出力する

サンプルコードの動作確認環境

本サンプルでは、PythonとSeleniumを使用しています。(Windows環境)

  • OS   : Windows10
  • 言語   :Python
  • ツール  :Selenium (chromedriverを使用)
  • エディタ :VSCode
  • ブラウザ :GoogleChrome

サンプルコード

コメントで簡単な説明を記載していますので参考にしてください。

出力ファイル(一部抜粋)

サンプルコードを実行すると以下のようなCSVファイル(youtube_trending_music_rank.csv)が出力されます。

実際の業務では、出力したCSVファイルの内容を分析していきます。

続いてサンプルコードの内容について説明していきます。ソースコード見れば内容がわかる方は、読み飛ばしても問題ないです。

サンプルコードの解説

ここからはサンプルコードの内、YouTubeにアクセスする部分について解説します。

まず、メソッド「get_youtube_trending_music_info」に引数として以下のパラメータを渡します。

メソッド「get_youtube_trending_music_info」の引数
  • url : YouTubeのURL
  • outputFileName : CSVファイル名

Seleniumのパラメータを設定し、urlにアクセスしています。

上記でYouTubeの急上昇タブのページにアクセスします。しかし、初期表示では最新タブを選択した状態になっています。

初期表示では最新タブが選択されている

今回は音楽タブの情報を取得したいので、Seleniumで音楽タブをクリックする必要があります。

音楽タブを選択したときの情報を取得したい

Seleniumで音楽タブをクリックするために、以下の手順で対応していきます。

  1. 音楽タブの要素を指定する
  2. 指定した要素をクリックする

まず、音楽タブの要素を指定していきます。一般的に対象の要素を指定方法は、エレメントのidやclass名を指定する方法があります。

しかし、HTMLを調査するとエレメントのidやclassが他のタブと同一でした。そのため、今回はxpathで判別しています。

以下で音楽タブのxpathを設定します。xpathの取得方法については以下の記事を参考にしてください。

取得したxpathをクリックし、画面読み込み時間として2秒待ちます。

次に、ページ内のエレメントidが「video-title」のデータをすべて取得します。

エレメントidがvideo-titleの要素

「video-title」のデータをfor-in文で繰り返し、titlesに「動画のタイトル」、urlに「動画URL」を格納します。10件分のデータ取得を行うと繰り返し処理を終了しています。

取得データを整形してCSVファイルに出力します。今回はPythonライブラリのPandas(パンダス)を使用しています。

最後にブラウザを閉じます

まとめ

今回は、YouTubeをスクレイピングするサンプルコードの紹介をしました。

今回のサンプル作成にあたって、xpathの取得方法について学べました。xpathを使用する方法は、今後スクレイピングをする際によく使用することになると思うのでさらに勉強していきます。

ちなみに、YouTubeの情報を集めるには、今回紹介したスクレイピングYouTube Data APIを使用する方法があります

YouTube Data APIを使用したサンプルについては別の機会に紹介できればと思います。

カメ助

記事内容について、質問などありましたら気軽にコメントください!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

この記事を書いた人

大阪でITエンジニアしています。(8年目に突入)
趣味でウェブサイトに関することをいろいろと勉強しています。

勉強した内容やプログラミングに関する情報を中心に役立つ情報を発信するべく日々ブログを更新しています。

3度の飯よりも「柿の種」をこよなく愛する関西人。

コメント

コメントする

目次
閉じる