我需要帮助尝试获取 YouTube 评论用户名以从 Web 浏览器传输到列表框。我试图在没有 YouTube API 的情况下做到这一点。我已经搜索了一段时间,但一无所获。
问问题
291 次
1 回答
1
我找到了一个解决方案,例如你有这个视频(http://www.youtube.com/watch?v=Sn67KEiDPLY)。现在您想要获取评论作者。您应该创建一个 webbrowser 并在 webbrowser 导航到视频后,在 documentcomplete 上您可以检测到所有作者:
For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("span")
Dim ElementClass As String = "author"
If element.OuterHtml.Contains(ElementClass) Then
Dim aclass = "yt-uix-sessionlink yt-user-name"
If element.FirstChild.OuterHtml.Contains("yt-uix-sessionlink yt-user-name") Then
MsgBox(element.FirstChild.InnerText)
End If
End If
Next
MSgBox 将向您展示每位作者。但是您可以将它们写入 ListBox。您可以添加文本框来管理视频的 url。所以最后的代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WebBrowser1.Navigate(TextBox1.Text)
End Sub
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
ListBox1.Items.Clear()
For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("span")
Dim ElementClass As String = "author"
If element.OuterHtml.Contains(ElementClass) Then
Dim aclass = "yt-uix-sessionlink yt-user-name"
If element.FirstChild.OuterHtml.Contains("yt-uix-sessionlink yt-user-name") Then
ListBox1.Refresh()
ListBox1.Items.Add(element.FirstChild.InnerText)
End If
End If
Next
End Sub
所以你可以添加这样的评论:
ListBox1.Items.Clear()
For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("div")
Dim ElementClass As String = "comment-text"
If element.OuterHtml.Contains(ElementClass) Then
Dim divclass = "comment-text"
If element.Parent.InnerHtml.Contains(divclass) Then
ListBox1.Refresh()
ListBox1.Items.Add(element.InnerText)
End If
End If
Next
它适用于 Webbrowser 控件,但 @ObieMD5 是正确的 - 使用 Youtube API 会更容易。
于 2013-07-25T07:38:34.560 回答