YouTubeの再生リストのURLを取得
VBAを使ってYouTubeの再生リストのURL、タイトルを一括でエクセルシートに作成する方法です。
関数、メソッドなど
InternetExplorer.ApplicationオブジェクトとHTMLDocumentオブジェクトなどを使用しますユーチューブの場合は直接HTMLDocument内を取得しようとするとうまくいかないので、IEを表示してHTMLドキュメント内を見ていきます。
そのほかには、Cells.Replaceメソッド、For Toのループ処理ぐらいです。
コード
Sub youtube_list() 'ツール→参照設定で「Microsoft HTML Object Library」にチェック入れる Dim ws As Worksheet, i As Long, n As Long, r As Long Set ws = ThisWorkbook.Worksheets("Sheet1") Dim document As Object Dim objIE As Object Dim htmlDoc As HTMLDocument Dim url_list As String 'IEオブジェクトを作成 Set objIE = CreateObject("InternetExplorer.Application") 'inputboxを使用してURLをセット url_list = InputBox(prompt:="url_list", Default:="") objIE.Navigate url_list 'IEを表示 objIE.Visible = True '読み込むまでの処理 While objIE.ReadyState <> 4 Or objIE.Busy = True DoEvents Wend 'objIEで読み込まれているHTMLドキュメントをセット Set htmlDoc = objIE.document With ws 'ヘッダー .Cells(1, 1) = "url" .Cells(1, 2) = "tittle" c = 0 i = 2 For n = 0 To htmlDoc.all.Length - 1 With htmlDoc.all(n) 'リンクがあるタグのみ対象 If .tagName = "A" Then 'urlがあるclass If .className = "pl-video-title-link yt-uix-tile-link yt-uix-sessionlink spf-link " Then 'URL ws.Cells(i, 1) = .outerHTML '余計な部分を削除 ws.Cells(i, 1).Replace what:="&*", replacement:="", lookat:=xlPart, MatchCase:=False ws.Cells(i, 1).Replace what:="*watch?v=", replacement:="", lookat:=xlPart, MatchCase:=False ws.Cells(i, 1) = "https://www.youtube.com/watch?v=" & ws.Cells(i, 1) ws.Cells(i, 1).WrapText = False 'タイトル ws.Cells(i, 2) = .innerText ws.Cells(i, 2).WrapText = False i = i + 1 End If End If End With Next n End With 'IE閉じる objIE.Quit End Sub
以上です。
解説
VBEの標準モジュールにそのまま貼れば動くとは思います。inputボックスには再生リストのURLをそのままコピペします。(例、https://www.youtube.com/playlist?list=PLvMqQYhs_H1dSCGF20D5jUf_4AaJ50XF1)
再生リストのURLはAタグ(=リンクタグ)の中にあるので全てのタグの中からAタグを探し
If .tagName = "A" Then
そして、リンクの中でも再生用のURLはclassnameが"pl-video-title-link yt-uix-tile-link yt-uix-sessionlink spf-link "となっているので
If .className = "pl-video-title-link yt-uix-tile-link yt-uix-sessionlink spf-link " Then
で目的のURLを探しています。
あと、VBE上でツール→参照設定で「Microsoft HTML Object Library」にチェック入れてVBAでHTMLDocumentを使えるように設定が必要です。