Informationen aus HTML lesen

  • Hallo,

    ich versuche schon die ganze Zeit die Interpreten, Titel und die Zeit aus einer Seite auszulesen. Hier mein bisheriger Code:

    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    #include <Array.au3>
    #include <Inet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $Schritte = 0

    [/autoit] [autoit][/autoit] [autoit]

    $FRead = _INetGetSource("http://www.swr3.de/musik/musikrecherche/-/id=47424/did=202234/1wuwzys/index.html")

    [/autoit] [autoit][/autoit] [autoit]

    $SBetween = _StringBetween($FRead, '<a href="http://www.swr3.de/musik/poplexikon/-/id=', '</a>')

    [/autoit] [autoit][/autoit] [autoit]

    $GetArray = UBound($SBetween)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $Array[$GetArray + 10]
    Dim $Array2[13 + 10]
    Dim $Array3[13 + 10]

    [/autoit] [autoit][/autoit] [autoit]

    For $NextLoop = 0 To $GetArray - 1
    $Split = StringSplit($SBetween[$NextLoop], ">")
    $Array[$NextLoop] = $Split[2]
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $Array2[0] = $Array[0] & "---" & $Array[0 + 1]
    $Array2[1] = $Array[2] & "---" & $Array[0 + 3]
    $Array2[2] = $Array[4] & "---" & $Array[0 + 5]
    $Array2[3] = $Array[6] & "---" & $Array[0 + 7]

    [/autoit] [autoit][/autoit] [autoit]

    For $NextLoop = 0 To 12
    $Array2[$NextLoop] = $Array[$Schritte] & "---" & $Array[$Schritte + 1]
    $Schritte += 2
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $NextLoop = 0 To 12
    $Filter = StringReplace($Array2[$NextLoop], "Â", "")
    $Filter = StringReplace($Filter, "ö", "ö")
    $Filter = StringReplace($Filter, "ü", "ü")
    $Array3[$NextLoop] = $Filter
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($Array3)

    [/autoit]

    Hat jemand eine bessere Idee?

  • hi... ist noch nicht ganz fertig ... aber ist der weg.-...


    [autoit]

    #include <String.au3>
    #include <Array.au3>
    #include <Inet.au3>

    [/autoit][autoit][/autoit][autoit]

    $retun = _Get_Playlist_swr3()

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay( $retun)

    [/autoit][autoit][/autoit][autoit]

    Func _Get_Playlist_swr3()
    $quelltext = _INetGetSource("http://www.swr3.de/musik/musikrecherche/-/id=47424/did=202234/1wuwzys/index.html")
    $now = _StringBetween ( $quelltext , '<div class="doctypes_Frontmod_LastTitles">','<div class="doctypes_Frontmod_LastTitles_Note">' )
    If IsArray($now) Then
    $now = _StringBetween ( $now[0], '" >','</a>' )
    If IsArray ($now) Then
    Dim $ausgabe[1]
    For $i = 0 To 24 Step 2
    _ArrayAdd($ausgabe, $now[$i]&'+'&$now[$i+1])
    Next
    Return $ausgabe
    Else
    Return -1
    EndIf
    Else
    Return -1
    EndIf
    EndFunc

    [/autoit]

    MFG chris :D

    • Offizieller Beitrag

    Hier hast Du eine Lösung, bei der Du ein Array mit den letzten 13 Interpreten und den Titeln zurückbekommst:

    [autoit]


    #include <Array.au3>
    #include <Inet.au3>

    [/autoit][autoit][/autoit][autoit]

    $aOut = _Get_Playlist_swr3()

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($aOut)

    [/autoit][autoit][/autoit][autoit]

    Func _Get_Playlist_swr3()
    Local $sSource, $aOut, $sBuffer
    $sSource = _INetGetSource("http://www.swr3.de/musik/musikrecherche/-/id=47424/did=202234/1wuwzys/index.html")
    $sBuffer = StringToBinary($sSource, 1)
    $sSource = BinaryToString($sBuffer, 4)
    $aOut = StringRegExp($sSource, '(?s)<tr class="farben_hg.+?">.+?<td>(.+?)</td>.+?<td>(.+?)</td>', 3)
    If Not IsArray($aOut) Then Return SetError(1, 0, 0)
    For $i = 0 To UBound($aOut) -1
    $aOut[$i] = StringRegExpReplace($aOut[$i], '<.+?>|\h{2,}|\v', '')
    Next
    Return $aOut
    EndFunc

    [/autoit]
  • Danke. Jetzt weiß ich aber nicht genau wie ich an die Uhrzeiten rankomme -.- . So hab ich es schon ausprobiert:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <Inet.au3>
    #include <String.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _Get_Time_SWR3()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Get_Time_SWR3()
    Local $sSource, $aOut, $sBuffer, $timer = 0
    Dim $Time[50]
    $sSource = _INetGetSource("http://www.swr3.de/musik/musikrecherche/-/id=47424/did=202234/1wuwzys/index.html")

    [/autoit] [autoit][/autoit] [autoit]

    $Between = _StringBetween($sSource, "<td>", "</td>")

    [/autoit] [autoit][/autoit] [autoit]

    For $NextLoop = 0 To UBound($Between) - 1

    [/autoit] [autoit][/autoit] [autoit]

    $Text = $Between[$NextLoop]
    $Text = StringReplace($Text, @CR, "")
    $Text = StringReplace($Text, @LF, "")
    $Text = StringReplace($Text, @TAB, "")

    [/autoit] [autoit][/autoit] [autoit]

    If Number(StringRight($Text, 1)) Then
    MsgBox(0, "", $Text)
    EndIf
    Next
    EndFunc ;==>_Get_Playlist_swr3

    [/autoit]
    • Offizieller Beitrag

    Und hier das Ganze inkl. Uhrzeiten:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <Inet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $aOut = _Get_Playlist_swr3()

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aOut)

    [/autoit] [autoit][/autoit] [autoit]

    Func _Get_Playlist_swr3()
    Local $sSource, $aOut, $sBuffer
    $sSource = _INetGetSource("http://www.swr3.de/musik/musikrecherche/-/id=47424/did=202234/1wuwzys/index.html")
    $sBuffer = StringToBinary($sSource, 1)
    $sSource = BinaryToString($sBuffer, 4)
    $aOut = StringRegExp($sSource, '(?s)<tr class="farben_hg.+?">.+?<td>(.+?)</td>.+?<td>(.+?)</td>.+?<td>(.+?)</td>', 3)
    If Not IsArray($aOut) Then Return SetError(1, 0, 0)
    For $i = 0 To UBound($aOut) -1
    $aOut[$i] = StringRegExpReplace($aOut[$i], '<.+?>|\h{2,}|\v', '')
    Next
    Return $aOut
    EndFunc

    [/autoit]