-1

我需要帮助尝试获取 YouTube 评论用户名以从 Web 浏览器传输到列表框。我试图在没有 YouTube API 的情况下做到这一点。我已经搜索了一段时间,但一无所获。

4

1 回答 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 回答