Text zwischen 2 Texten lesen funktioniert nicht immer

  • VB.NET

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

    Text zwischen 2 Texten lesen funktioniert nicht immer

    Hey,

    habe ein Problem.
    Ich habe verschiedene Websites auf denen ich Preise auslesen möchte.
    Das klappt bei den meisten URLS, die ich lese auch so:

    Quellcode

    1. Public Function GetBetween(ByVal Source As String, ByVal Del1 As String, ByVal Del2 As String)
    2. Dim nIndexStart As Integer = Source.IndexOf(Del1)
    3. Dim nIndexEnd As Integer = Source.IndexOf(Del2)
    4. If nIndexStart > -1 AndAlso nIndexEnd > -1 Then
    5. Dim res As String = Strings.Mid(Source, nIndexStart + Del1.Length + 1, nIndexEnd - nIndexStart - Del1.Length)
    6. Return res
    7. Else
    8. End If
    9. End Function
    10. Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(strLine)
    11. Dim response As System.Net.HttpWebResponse = request.GetResponse()
    12. Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
    13. Dim sourcecode As String = sr.ReadToEnd()
    14. Dim Price As String = GetBetween(sourcecode, "ab", " € ✓ ")


    Dies klappt wie gesagt wunderbar. Leider aber variieren die Seiten teilweise. Als Beispiel jetzt:
    idealo.de/preisvergleich/Typ/5702016668223.html

    Da gibt es "ab.." nicht im Sourcecode.
    Dort gibt es aber folgende Stelle:

    <span class="table-cell oopStage-priceRangePrice">6,90 € – 11,99 €</span>


    Diese 6,90 € möchte ich nun auslesen.
    Folgendes gibt mir aber keine Ergebnisse:

    VB.NET-Quellcode

    1. GetBetween(sourcecode, "cell oopStage-priceRangePrice" & ControlChars.Quote & ">", " €")


    Er findet einfach nichts. Es gibt leider keine weitere geeignete Stelle im Quelltext. Mit Regex habe ich meine Probleme, kriege kein Pattern aufgestellt mit den Anführungszeichen in dem HTML-Tag..

    Hatte folgendes Pattern probiert:

    Quellcode

    1. ​Dim pattern As String = "priceRangePrice" & ControlChars.Quote & ">...."

    Dann sollte er wenigstens schonmal den Preis finden (zwar mit dem Teil davor, aber besser als nichts erstmal), jedoch auch hier wieder.. nichts.

    Woran kann das liegen?

    Vielleicht hat ja jemand einen Tipp..
    Danke :)
    Gruß xored

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

    Danke dir, habe das mit den doppelten Anführungszeichen nun auch verstanden. Habe folgendes Regex-Pattern aufgebaut:

    "(?<=<span class=""table-cell oopStage-priceRangePrice"">)(.*?)(?=</span>)"


    Klappt nun auch.
    Danke sehr! :)


    Damit läuft der Idealo Preischecker rund :D Erstmal in Lego investieren:

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