抽出方法は簡単にいうと『正規表現を用いています。』という一言ですんでしまいますが、正規表現って何?という方が大多数だと思います。
正規表現とは? 私もきちんと理解しているわけではないですが、windowsのファイル検索でよくワイルドカード(*)を使用して*.jpgで検索すると拡張子が.jpgのファイルのすべてが検索策されますが、これの高級版といったところでしょうか。
詳しくは、サルにもわかる正規表現入門 ( http://www.mnet.ne.jp/~nakama/ )で説明されています。また、Visual Basicでの正規表現によるhtmlタグ抽出方法は、正規表現でメールアドレスを抽出する(http://dobon.net/vb/dotnet/string/regexmatch.html)がものすごく参考になります。
ここで、YouTubeの関連動画のタグは[関連動画タグの例]のようになっていますので、これを[YouTube関連動画タグの抽出 (Visial basic)]で抽出しています。
う~ん説明になっていないな~、リクエストがあれば詳しく説明します。
また、もっといい方法があるれば教えてください。
[関連動画タグの例]
<li class="video-list-item "><a href="/watch?v=z-ymvEjN6qQ&feature=relmfu" class="video-list-item-link "><span class="ux-thumb-wrap contains_addto "><span class="video-thumb ux-thumb-96 "><span class="clip"><img src="//s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif" alt="サムネイル" data-thumb="//i3.ytimg.com/vi/z-ymvEjN6qQ/default.jpg" ></span></span><span class="video-time">2:05</span><span dir="ltr" class="yt-uix-button-group addto-container short video-actions" data-video-ids="z-ymvEjN6qQ" data-feature="thumbnail"><button type="button" class="start addto-button-plus-hide-arrow yt-uix-button yt-uix-button-short yt-uix-tooltip" onclick=";return false;" title="後で見る に追加" data-button-menu-id="shared-addto-menu" data-button-action="" role="button" aria-pressed="false"><img class="yt-uix-button-icon yt-uix-button-icon-addto" src="//s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif" alt=""><span class="yt-uix-button-content"><span class="addto-label">追加先</span></span><img class="yt-uix-button-arrow" src="//s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif" alt=""></button><button type="button" class="end yt-uix-button yt-uix-button-short yt-uix-tooltip yt-uix-button-empty" onclick=";return false;" title="" data-button-menu-id="shared-addto-menu" data-button-action="" role="button" aria-pressed="false"><img class="yt-uix-button-arrow" src="//s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif" alt=""></button></span><span class="video-in-quicklist">キューに追加しました </span></span><span dir="ltr" class="title" title="レンチキュラーレンズを使った歩行誘導手法 #DigInfo"> レンチキュラーレンズを使った歩行誘導手法 #DigInfo</span><span class="stat">ユーザー: diginfonewsjapan</span><span class="stat view-count">再生回数 9,250 回</span></a></li>
[YouTube関連動画タグの抽出 (Visial basic)]
Public Sub Youtubeのソースからページノードを作成改(ByVal ソース As String, ByVal 親ノード番号 As Integer)
Dim r0 As System.Text.RegularExpressions.Regex
Dim m0 As System.Text.RegularExpressions.Match '---------通常ページからの抽出----------
r0 = New System.Text.RegularExpressions.Regex("<li class=""video-list-item "">.*?</li>",_
System.Text.RegularExpressions.RegexOptions.IgnoreCase)
ソース = ソース.Replace(Chr(10), "")
m0 = r0.Match(ソース)
While m0.Success
Youtubeの関連動画抽出(m0.Value)
m0 = m0.NextMatch()
End While
End Sub
Public Sub Youtubeの関連動画抽出(ByVal html As String)
Dim r As System.Text.RegularExpressions.Regex
Dim m As System.Text.RegularExpressions.Match
'---------リンクの抽出----------
r = New System.Text.RegularExpressions.Regex("a href="".*?""", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
m = r.Match(html)
ページUrl = "http://www.youtube.com" & Mid(m.Value, 9)
ページUrl = Microsoft.VisualBasic.Left(ノード.ページUrl, Len(ノード.ページUrl) - 1)
'イメージの抽出
r = New System.Text.RegularExpressions.Regex("data-thumb="".*?""", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
m = r.Match(html)
イメージUrl = "http:" & Mid(m.Value, 13)
イメージUrl = Microsoft.VisualBasic.Left(ノード.イメージUrl, Len(ノード.イメージUrl) - 1)
'タイトルの抽出
r = New System.Text.RegularExpressions.Regex("class=""title"" title="".*?""", _
System.Text.RegularExpressions.RegexOptions.IgnoreCase)
m = r.Match(html)
タイトル = Mid(m.Value, 22)
End Sub
0 件のコメント:
コメントを投稿