YouTubeで検索して視聴回数が多い動画のurlを取得します。

今回もSeleniumを使います。NuGetでSelenium.WebDriverとSelenium.Support、そして操作したいブラウザのDriverをインストールします。今回はChromeを操作するのでSelenium.Chrome.WebDriverをインストールします。それから結果をExcelファイルとして保存するのでClosedXMLもインストールしておきましょう。

それから参照にSystem.Web.dllを追加しておいてください。

取得するのは、動画タイトル、動画url、チャンネル名、チャンネルurl、再生数、動画がアップされた日です。

再生回数順で検索した場合、検索結果のurlは以下のようになります。

https://www.youtube.com/results?search_query={0}&sp=CAMSAhAB

また、検索結果のページのHTMLを調べてみると以下のような構造になっています。ここから必要な情報を取得することができます。

そこで以下の方法でYouTubeの検索結果から動画情報を抜き出すことができます。

あとは自動的にスクロールさせて次々に必要なデータを取得していくだけです。

取得したデータを格納するクラスを作成します。動画のタイトルとurl、チャンネル名とチャンネルurl、視聴回数、アップロードされた時期を格納します。

Form1クラスのコンストラクタを示します。numericUpDown1は最大取得数を設定するためのものです。コンストラクタ内でChromeDriverを生成します。

検索ボタンが押されたら自作メソッドGetVideoDatasを呼び出して検索結果を取得します。

検索結果が読み込まれたらHTMLを解析して動画に関する情報を取得します。

データが取得できたらexcelファイルとして保存します。

アプリケーションが終了するときは忘れずにChromeDriverをDisposeしておきます。