RegEx - Trackliste aus Quellcode über HttpWebRequest splitten

  • VB.NET

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

    RegEx - Trackliste aus Quellcode über HttpWebRequest splitten

    Hallo liebe Com.
    Ich bin derzeit an einem Projekt, bei dem ich den aktuellen Track von zb. hardbase.fm/ auslesen möchte.
    Dabei werde ich den Quellcode über System.Net.HttpWebRequest abfragen.

    Ausschnitt des Quellcodes
    Spoiler anzeigen

    Quellcode

    1. "> <a href="/release/6655" style="color: #FFFFFF">Swedish House Mafia - One</a>


    Um jetzt den aktuellen Track auszulesen (im beispiel: Swedish House Mafia - One) habe ich folgendes Programm erstellt.

    Bild
    Spoiler anzeigen
    <img src="http://s14.directupload.net/images/130119/cx83arp6.jpg" alt="cx83arp6.jpg" title="cx83arp6.jpg" style="font-size: 0.8em;" />


    Aktueller Programmcode
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Text.RegularExpressions
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("http://www.hardbase.fm/")
    5. Dim response As System.Net.HttpWebResponse = request.GetResponse
    6. Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
    7. Dim rssourcecode As String = sr.ReadToEnd
    8. 'Beispiel des Codes <a href="/release/3124" style="color: #FFFFFF">Swedish House Mafia - One</a>
    9. Dim r As New System.Text.RegularExpressions.Regex("<a href=""/release/(.*)"" style=(.*)""color: #FFFFFF"">(.*)(.*)</a>")
    10. Dim matches As MatchCollection = r.Matches(rssourcecode)
    11. For Each itemcode As Match In matches
    12. ListBox1.Items.Add(itemcode.Value.Split(">(.*)""(.*)</a>").GetValue(1))
    13. Next
    14. End Sub
    15. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    16. End Sub
    17. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    18. TextBox1.Text = ListBox1.SelectedItem
    19. End Sub
    20. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    21. End Sub
    22. End Class



    Wenn ich nun den derzeitigen Titel auslesen möchte erhalte ich die titel: Swedish House Mafia - One</a
    Ich möchte aber den Track ohne </a auslesen.


    Weiß jemand wie ich das hinbekomme?
    - Manchmal kann ich nichts auslesen weiß jemand wie ich das behebe bzw. woran das liegt ?


    Grüße Regular_vb_user
    PS: Bin ein Blutiger Anfänger im Thema RegEx

    Hab den Code mal minimal verändert so das du nur den Titel bzw.Interpret ausliest.

    VB.NET-Quellcode

    1. Dim r As New System.Text.RegularExpressions.Regex("<a href=""/release/(.*)"" style=(.*)""color: #FFFFFF"">(.*)(.*)<")
    2. Dim matches As MatchCollection = r.Matches(rssourcecode)
    3. For Each itemcode As Match In matches
    4. ListBox1.Items.Add(itemcode.Value.Split(CChar(">(.*)""(.*)<")).GetValue(1).ToString.Substring(0, itemcode.Value.Split(CChar(">(.*)""(.*)<")).GetValue(1).ToString.Length - 1))
    5. Next


    mfG

    Derfuhr
    Hab den Code nochmal minimal verändert, sodass du nur den Titel bzw. Interpret ausliest und der Code gleichzeitig noch habwegs sauber ist.

    VB.NET-Quellcode

    1. For Each m As Math In Regex.Matches("", "(?<=\<a href=""/release/\d+[\s""\w=:#]+\>)[^\<]+", RegexOptions.None)
    2. ListBox1.Items.Add(CStr(m.Value))
    3. Next