reinen IE Textseite lesen

  • Hallo,
    ich habe eine IE Webseite die eigentlich keine ist denn es wird kein HTML Code verwendet. Wenn ich mir den Quelltext der Seite Ansehe besteht die nur aus Text in mehreren Zeilen.

    Nun meine Frage wie kann ich diesen Text in ein Array einlesen um ihn dann weiter verarbeiten zu können?

    Gruß Ingo

  • Hallo,
    das habe ich bereits versucht:

    • _IEBodyReadText => Ich bekommen direkt bei der Rückgabe aus der Funktion eine Fehlermeldung. Vermutlich weil kein '<'body'>' und '<'/body'>' vorhanden ist.
    • _IEDocReadHTML => gleiches Bild Fehlermeldung bei der Rückgabe aus der Funktion. Ist ja auch kein HTML-Quelltext auf der Seite vorhanden

    Ist schon eine etwas verrückte Situation. ?(

    Gruß Ingo

  • [autoit]

    #include <INet.au3>
    #include <Array.au3>

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

    Global $a_Text = StringSplit (_INetGetSource ("http://www.deine-url.de/"), @LF, 1)
    _ArrayDisplay ($a_Text)

    [/autoit]
  • Hallo,
    habe ich versucht, leider auch nichts ich bekommen eine leeres Array zurück. Ich vermute weil die Seite ja keinen Quelltext hat.

    Ist schon eine verrückte Sache! :rofl:

    Gruß Ingo

  • Dann gib mal den Link zu der Seite.

    Oder probier es so:

    [autoit]

    $wert = BinaryToString(InetRead($url))
    MsgBox(0,"",$wert)

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hallo,
    nein damit funktioniert es auch nicht. In der URL ist auch kein Dateiname enthalten.

    Der Link zur Seite wird nichts nützen, dann das System ist aus dem Internet nicht erreichbar.

    Eventuell könnte ich die Daten direkt aus dem IE Fenster lesen. Aber ich habe keinen blassen wie ich das anstellen soll.

    Gruß Ingo

  • Hallo,
    na das mache ich doch glatt. So stellt sich die Ausgebe im IE dar. Es handelt sich um Messwerte die ich in Excel weiter verarbeiten möchte.

    Spoiler anzeigen

    Group,Time (seconds),Throughput (Inbound and Outbound) [kb/sec]
    Group DE01,1336375800,707598.2845333333
    Group DE01,1336375860,736490.8133333334
    Group DE01,1336375920,796192.7964
    Group DE01,1336375980,872773.9770666667
    Group DE01,1336376040,809975.9970666667
    Group DE01,1336376100,757982.6945333333
    Group DE01,1336376160,815062.0618666667
    Group DE01,1336376220,887828.424
    Group DE01,1336376280,851362.1712000001
    Group DE01,1336376340,809280.4180000001
    Group DE01,1336376400,777605.1489333333
    Group DE01,1336376460,849581.4514666668
    Group DE01,1336376520,767670.1612000001
    Group DE01,1336376580,756456.3689333333
    Group DE01,1336376640,798398.2196000001
    Group DE01,1336376700,848484.318


    In der URL wird ein Servlet angesprochen (https://server.test.com:8443/webservice/DataServiceServlet?....).

    Gruß Ingo

  • Ich würde die seite persönlich mit winHttp aufrufen & dan mit StingRegExp arbeiten. So kannst du genau sagen welche teile des codes du haben möchtest & sie werden in ein Array gespeichert.

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Hallo Donsen64,

    teste einmal dieses Skript:

    Spoiler anzeigen
    [autoit]

    ; *******************************************************
    ; Example 1 - Trap COM errors so that 'Back' and 'Forward'
    ; outside of history bounds does not abort script
    ; (expect COM errors to be sent to the console)
    ; *******************************************************
    ;
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <Array.au3>

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

    _IEErrorHandlerRegister()

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

    $oIE = _IECreateEmbedded()
    GUICreate("Embedded Web control Test", 640, 580, _
    (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
    $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
    $GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
    $GUI_Button_Back = GUICtrlCreateButton("Back", 10, 420, 100, 30)
    $GUI_Button_Forward = GUICtrlCreateButton("Forward", 120, 420, 100, 30)
    $GUI_Button_Home = GUICtrlCreateButton("Home", 230, 420, 100, 30)
    $GUI_Button_Stop = GUICtrlCreateButton("Stop", 340, 420, 100, 30)

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

    ;GUISetState() ;Show GUI

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

    ;_IENavigate($oIE, "D:\Dokumente und Einstellungen\Bert\Desktop\test.html")
    _IENavigate($oIE, "https://server.test.com:8443/webservice/DataServiceServlet")

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

    $sText = _IEBodyReadText($oIE)

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

    ConsoleWrite("--------"&@CRLF &$sText &"--------"&@CRLF)

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

    $aVars = StringSplit($sText, "Group", 3)
    _ArrayDelete($aVars, 0)
    $iRows = UBound($aVars) ;+ 1 ???
    $aVars[0] = StringTrimLeft($aVars[0], 1)
    $aSplit = StringSplit($aVars[0], ",", 2)
    $iCols = UBound($aSplit) + 1
    ConsoleWrite("Zeilen: " & $iRows & @TAB & "Spalten: " & $iCols & @CRLF)
    Dim $a2D[$iRows][$iCols]
    _ArrayDisplay($aVars)
    For $i = 1 To $iRows - 1
    If $aVars[$i] <> "" Then
    $aSplit = StringSplit($aVars[$i], ",", 2)
    ;ConsoleWrite("Zeile: " & $i & @TAB)
    ;_ArrayDisplay($aSplit)
    For $j = 0 To $iCols - 1
    ;ConsoleWrite($j & @TAB)
    $a2D[$i][$j] = $aSplit[$j]
    Next
    EndIf
    ;ConsoleWrite(@CRLF)
    Next
    $a2D[0][0] = "Group"
    $a2D[0][1] = "Time"
    $a2D[0][2] = "Throughput"
    _ArrayDisplay($a2D)

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

    GUIDelete()

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

    Exit

    [/autoit]

    mit deinen Daten in eine Datei geschrieben funktioniert es Ich bezweifle allerdings dass dies der Quelltext der Seite ist, da ich keinerlei Beschreibungen zur Darstelling finde. Sollte dies so sein und die Variable $sText gefüllt werden dann poste den Inhalt dieser,

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (7. Mai 2012 um 17:50)

  • autoBert ließ mal seinen dritten Post in diesem Thread.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hallo,
    nein mit _IEBodyReadText habe ich es bereits versucht. Das hat nicht funktioniert. Aber vielen Dank für den Hinweis!

    Ich habe in der Zwischenzeit etwas gebaut was ansatzweise funktioniert. Aber noch nicht so wirklich. Weil die Seite natürlich nicht in der richtigen Zeit geladen wird.

    [autoit]

    Local $oIE
    Local $sText
    Local $sURL = ClipGet()

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

    $oIE = _IECreate($sURL, 0, 1, 0, 1)
    Sleep(1000)

    Send("{CTRLDOWN}")
    Send("a")
    Send("c")
    Send("{CTRLUP}")
    $sText = ClipGet()
    MsgBox(0, "Body Text", $sText)

    [/autoit]

    Eventuell kann mir jemand helfen, dass es sicher funktioniert. Also so lang gewartet wird bis die Seite auch wirklich geladen ist.

    Gruß Ingo

  • Ist ja auch klar weil du den vierten Paramter auf 0 gesetzt hast. Wenn so machst wird gewartet bis die seite komplett geladen ist:

    [autoit]

    Local $oIE
    Local $sText
    Local $sURL = ClipGet()

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

    $oIE = _IECreate($sURL)

    Send("{CTRLDOWN}")
    Send("a")
    Send("c")
    Send("{CTRLUP}")
    $sText = ClipGet()
    MsgBox(0, "Body Text", $sText)

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hallo,
    ja das hatte ich so auch probiert. Dann ist er aber nicht zurückgekommen und hat ewig gewartet. Ich werde mir das Morgen nochmal genauer ansehen.

    Gruß Ingo

  • Hallo Chip,
    du hattest Recht ohne Optionen funktioniert es. Aber leider kommt beim ersten Aufruf eine Fehlermeldung zum Zertifikat. Wenn ich die bestätige kommt er aber scheinbar durcheinander.

    Kann ich feststellen wenn der IE in einen Fehler gelaufen ist und entsprechend darauf reagieren?

    Gruß Ingo

  • Der Wink zu WinHTTP ist meiner Meinung nach am sinvollsten. !

    Spoiler anzeigen
    [autoit]

    #include <WinHTTP.au3>
    $hSession = _WinHTTPOpen()
    $hConnect = _WinHTTPConnect($hSession, '192.168.1.123', $INTERNET_DEFAULT_HTTPS_PORT)

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

    $aArray = StringSplit(StringStripCR( _
    _WinHttpSimpleSSLRequest($hConnect, 'GET', '/hier-die-url') _
    ), @LF, 3)

    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)

    [/autoit]


    Ansonsten könntet ihr auch mal _IEDocReadHTML() versuchen (Nein, es ist KEIN _IEBodyReadHTML()).