代码之家  ›  专栏  ›  技术社区  ›  al78310

vb.net、webbrowser、许多相同的类名

  •  0
  • al78310  · 技术社区  · 8 年前

    昨天我问如何在没有ID的div中获取文本。
    人们给了我一个很好的答案:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim divs = WebBrowser1.Document.Body.GetElementsByTagName("div")
        For Each d As HtmlElement In divs
            If d.GetAttribute("className") = "js-text-container" Then
                RichTextBox1.Text = d.InnerText
            End If
        Next
    

    但现在我面临一个新问题:我意识到许多文章都有相同的类名“js文本容器”,当我单击 button1 ,在我的richtextbox中,我得到了这个类名的LAST div的文本。。。

    如何使用名为“jstextcontainer”的类获取FIRST div中的文本?

    2 回复  |  直到 8 年前
        1
  •  0
  •   the_lotus    8 年前

    只需在找到第一个元素后退出循环。。。

    Dim divs = WebBrowser1.Document.Body.GetElementsByTagName("div")
    For Each d As HtmlElement In divs
        If d.GetAttribute("className") = "js-text-container" Then
            RichTextBox1.Text = d.InnerText
            Exit For
        End If
    Next
    

    您应该了解如何使用断点和单步执行代码。你马上就会注意到这一点。

        2
  •  0
  •   al78310    8 年前

    哇,伙计们,你们回答我这么快,非常感谢!!!!! 你们说得完全正确,我只需要退出循环,但我不知道命令“exit for” 谢谢大家,我学到了一些东西!

       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
        Dim divs = WebBrowser1.Document.Body.GetElementsByTagName("div")
    
        For Each d As HtmlElement In divs
    
            If d.GetAttribute("className") = "js-text-container" Then
                RichTextBox1.Text = d.InnerText
                Exit For
            End If
    
        Next
    
    End Sub
    

    顺祝商祺,这个社区太棒了!