Document.Body fortlaufend durchsuchen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von hate_regex.

    Document.Body fortlaufend durchsuchen

    Aloha!

    Ich werd hier gerade narrisch mit einem Problem!
    Übergebe WebBrowser1.Document.Body.InnerHtml in eine Variable und möchte diese fortlaufend auf Strings überprüfen die zwischen zwei Tags stehen. Ich habs mit RegEx versucht, aber vermutlich mit falschem Pattern und auch erfolglos über eine Substring Routine.

    Ich möchte also aus dem Code alle Wörter ausgeben, die zwischen

    Quellcode

    1. <SPAN class=topictitle><A class=topictitle href="ftopic4247.html">

    und

    Quellcode

    1. </A></SPAN>


    stehen. Ausser dem enthalten "ftopic4247.html" sind die Tags statisch.

    Quellcode

    1. Private Sub FindString()
    2. Dim a As String = WebBrowser1.Document.Body.InnerHtml
    3. Dim M As String() = {"<A class=topictitle href=", "</A></SPAN><SPAN"}
    4. Dim Ergebnis As String = ""
    5. For b As Integer = 0 To a.Length - M(0).Length
    6. If a.Substring(b, M(0).Length) = M(0) Then
    7. Ergebnis = a.Substring(b + M(0).Length)
    8. GoTo Weiter1
    9. End If
    10. Next
    11. Exit Sub
    12. Weiter1:
    13. For b As Integer = 0 To Ergebnis.Length - M(1).Length
    14. If Ergebnis.Substring(b, M(1).Length) = M(1) Then
    15. Ergebnis = Ergebnis.Substring(0, b)
    16. GoTo Weiter2
    17. End If
    18. Next
    19. Exit Sub
    20. Weiter2:
    21. MsgBox(Ergebnis)
    22. End Sub

    Damit finde ich schonmal (fast) das gesuchte, es fehlt noch eine Wildcard für "ftopic4247.html". Aber ich habs auch nicht hinbekommen das fortlaufend zu durchsuchen, nach dem ersten Result ist schluss (Schleifenfehler).

    Kann mir jemand helfen?
    Besten Dank!

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „hate_regex“ ()

    Ich würde so versuchen:

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    2. With DirectCast(sender, WebBrowser).Document.Body
    3. For Each link As HtmlElement In .GetElementsByTagName("A") ' alle Links auswerten
    4. If link.GetAttribute("href") = "www.meinewebsite.net/path/to/file.html" Then ' gezielte Suche nach url
    5. Debug.WriteLine(link.InnerText) ' Link-Text ausgeben
    6. End If
    7. Next
    8. End With
    9. End Sub
    Es geht noch etwas kürzer:

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    2. With DirectCast(sender, WebBrowser).Document
    3. ' .Links = Liste aller Links der geladenen Seite
    4. For Each link As HtmlElement In .Links
    5. Debug.WriteLine("Link-Text: " & link.InnerText & " -> URL: " & link.GetAttribute("href"))
    6. Next
    7. End With
    8. End Sub