Werte aus einem HTML Dokument auslesen mit RegEx? Bekomme keine Treffer

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Werte aus einem HTML Dokument auslesen mit RegEx? Bekomme keine Treffer

    Hey Leute ich wollte mit hilfe von RegEx ein bestimmtes Html Muster auslesen welches auf der Seite mehrmals vorkommt. In dem Muster Brauche ich die Werte der Tags(a href,img src,alt).
    Mein eigener Versuch war leider nicht so gut d.h. es wurde nichts gefunden.
    Ich hatte mich auch schon im Forum duchgeklickt aber habe jedoch keine wirklich passende Lösung gefunden.



    Hier ein Beispiel des Musters im Dokument:

    Quellcode

    1. <div class="resource">
    2. <div class="r-preview">
    3. <a href="/texture_pack/simsytexture-v4-147/" title="SimsyTexture v4 1.4.7">
    4. <img src="http://cdn2.planetminecraft.com/files/resource_media/screenshot/1307/2013-02-14_174857_4837987_thumb.jpg" alt="SimsyTexture v4 1.4.7">
    5. </a>
    6. </div>


    Und hier mein Versuch das Problem zu lösen(Planetcode == HTMLCode des Dokuments):

    VB.NET-Quellcode

    1. Private Function getTexturepacks()
    2. Dim pattern2 As String = ("<div class=\" & Chr(34) & "resource\" & Chr(34) & ">" & vbCrLf & " <div class=\" & Chr(34) & "r-preview\" & Chr(34) & ">" & vbCrLf & " <a href=\" & Chr(34) & "([^<]*)\" & Chr(34) & " title=\" & Chr(34) & "([^<]*)\" & Chr(34) & ">" & vbCrLf & " <img src=\" & Chr(34) & "([^<]*)\" & Chr(34) & " alt=\" & Chr(34) & "([^<]*)\" & Chr(34) & ">")
    3. Dim match2 As Match = Regex.Match(planetcode, pattern2)
    4. If match2.Success Then
    5. Dim link As String
    6. Dim name As String
    7. Dim image As String
    8. link = match2.Groups.Item(1).Value
    9. name = match2.Groups.Item(2).Value
    10. image = match2.Groups.Item(3).Value
    11. End If
    12. End Function

    Zum Schluss sollte dann jeweilig das raus kommen:
    Treffer1: "/texture_pack/simsytexture-v4-147/","SimsyTexture v4 1.4.7","http://cdn2.planetminecraft.com/files/resource_media/screenshot/1307/2013-02-14_174857_4837987_thumb.jpg"
    Treffer2: Link,name,image(link)
    Treffer3: Link,name,image(link)
    ...usw...
    Okay ich habe meinen Fehler gefunden. Da in dem HTML String noch die Formatierungen drinne waren. :rolleyes:

    VB.NET-Quellcode

    1. planetcode = Replace(planetcode, vbTab, "")
    2. planetcode = Replace(planetcode, vbLf, "")
    3. planetcode = Replace(planetcode, vbCr, "")


    Nun fehlt nur noch des finden mehrerer Treffer! :cursing:
    LG CR

    EDIT:

    Okay habs!

    VB.NET-Quellcode

    1. Dim pattern2 As String = ("<div class=\" & Chr(34) & "r-preview\" & Chr(34) & "><a href=\" & Chr(34) & "([^<]*)\" & Chr(34) & " title=\" & Chr(34) & "([^<]*)\" & Chr(34) & "><img src=\" & Chr(34) & "([^<]*)\" & Chr(34) & " alt=\" & Chr(34) & "([^<]*)\" & Chr(34) & "/>")
    2. Dim i As Integer
    3. Dim match2 As MatchCollection = Regex.Matches(planetcode, pattern2)
    4. For Each treffer As Match In match2
    5. link(i) = treffer.Groups.Item(1).Value
    6. titel(i) = treffer.Groups.Item(2).Value
    7. image(i) = treffer.Groups.Item(3).Value
    8. i += 1
    9. Next

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Corny Riegel“ ()

    Gratulation, immer besser wenn man selber darauf kommt ;)

    Nur als Tip:
    -cleanInput as string=Regex.replace(inputText,"\s","") entfernt alle Whitespaces (Tabs, Zeilenvorschübe, Leerzeichen) aus der Quelle
    - statt Chr(34) für die Anführungsstriche kannst Du auch "" im String verwenden, wird dann als einfaches " interpretiert