-1

YouTube コメントのユーザー名を Web ブラウザーからリストボックスに転送する方法を教えてください。YouTube API を使用せずにこれを実行しようとしています。私はしばらくの間探していましたが、何もありませんでした。

4

1 に答える 1

1

たとえば、このビデオがあります(http://www.youtube.com/watch?v=Sn67KEiDPLY)。次に、コメントの作成者を取得します。Web ブラウザーを作成する必要があります。Web ブラウザーがビデオに移動した後、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 に書き込むことはできます。TextBox を追加して、動画の 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 に答える