Postzeit auslesen

  • Hey, ich möchte im Board https://autoit.de/www.board.raidrush.ws die Postingzeit auslesen. Dazu folgendes Mini-Script

    [autoit]

    #include <ie.au3>
    #include <string.au3>

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

    $iE = _IECreate ("http://board.raidrush.ws/showthread.php?t=605689")
    _ieloadwait($ie)

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

    $source = _IEDocReadHTML($ie)

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

    $ftim = _StringBetween($source, 'border="0">', "<!-- / status icon and date")

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

    msgbox(0, "abc", $ftim[0])
    exit

    [/autoit]

    Nur warum bekomm ich nicht die gesuchte Zeit ausgegeben? Soweit ich das sehe passt doch alles vom Code her; wo ist mein Fehler?

    • Offizieller Beitrag

    Zum Einen ist dein _StringBetween falsch.
    Schau dir mal an, wo die Zeit tatsächlich steht (du hast </a> unterschlagen):

    Spoiler anzeigen


    Zum Anderen solltest du vielleicht die Tabelle ( _IETableGetCollection ) auslesen, macht sich besser bei mehreren Posts.

  • Ich bekomm nach wie vor den Array-Error.

    [autoit]

    #include <ie.au3>
    #include <string.au3>

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

    $iE = _IECreate ("http://board.raidrush.ws/showthread.php?t=605689")
    _ieloadwait($ie)

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

    $source = _IEDocReadHTML($ie)

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

    $ftim = _StringBetween($source, 'border="0" /></a>', "<!-- / status icon and date")

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

    msgbox(0, "abc", $ftim[0])
    exit

    [/autoit]
    • Offizieller Beitrag

    Noch zwei Sachen. Der string davor ist nicht eindeutig und kommt noch häufiger im Quelltext vor. Da mußt du die ganze Zeile nehmen.
    Der String danach ist auch nicht korrekt, es fehlen: Zeilenumbruch, 3x TAB, wieder Zeilenumbruch, 3x TAB. ;)

    [autoit]

    #include <INet.au3>
    #include <string.au3>
    $source = _INetGetSource("http://board.raidrush.ws/showthread.php?t=605689")
    $ftime = _StringBetween($source, '<a name="post8376871"><img class="inlineimg" src="http://www.xup.in/000/board.raidrush.ws/a_rr_style/statusicon/post_old.gif" alt="Alt" border="0" /></a>', @CRLF & @TAB & @TAB & @TAB & @CRLF & @TAB & @TAB & @TAB & "<!-- / status icon and date")
    If IsArray($ftime) Then
    msgbox(0, "Time", StringStripWS($ftime[0], 3))
    Else
    MsgBox(0, '', 'Fehler')
    EndIf

    [/autoit]

    Noch besser geht es mit Regulären Ausdrücken.

  • So klappts. Nur wenn ich das wieder mit IE mache, und iebodyreadhtml mache klappts wieder nicht. Nur brauch ich halt die Cookies vom IE, bzw. muss angemeldet sein, um mein Vorhaben realisieren zu können.

    • Offizieller Beitrag

    Nur wenn ich das wieder mit IE mache, und iebodyreadhtml mache klappts wieder nicht.


    Dann lass dir doch die Source in die Console ausgeben, die kann sich bei _INetGetSource und _IEBodyReadHTML etwas unterscheiden.

    Da fällt mir auf: du hast ja gar nicht die Source gelesen! - Sondern mit _IEDocReadHTML !! DAS ist ein Unterschied!