Website bzw Teil einer Website auf/in ein Gui anzeigen lassen (vorher auslesen) - aber wie?

  • Hallo,

    und zwar wollte ich fragen ob es möglich ist, eine Website von autoit auslesen zu lassen, ich nehme an es müsste der quellcode sein, für das was ich vor habe, und zwar z.b. eine Tabelle einer Website auf ein Gui schreiben zu lassen. Also autoit sollte am anfang des scripts dann immer wieder auf die Website zugreifen (ohne das sich ein inetexplorer öffnet) und die daten der Tabelle auslesen und diesse Tabelle wiedergeben.

    Ist sowas möglich?
    Wenn ja, wie?
    mfg

  • [autoit]

    #include-once

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

    ;===============================================================================
    ;
    ; Function Name: _INetGetSourcePost()
    ; Description: Gets the source from an URL without writing a temp file and you can send a Post.
    ; Parameter(s): $sURL = The URL of the site.
    ; $sPost = The Post to send
    ; Requirement(s): -
    ; Return Value(s): On Success - Return a array with $aReturn[0] = Backheader and $aReturn[1] = Sourcecode
    ; On Failure - 0 and sets @ERROR
    ; @error = 1: Post or URL is nothing
    ; @error = 2: Error by RegularExpression
    ; @error = 3: $sHost or $sHttp1 is nothing
    ; @error = 4: Can not get IP of Host
    ; @error = 5: Can not connect to host
    ; @error = 6: Nothing can be send
    ; @error = 7: Connection abborted while receiving
    ; Author(s): GtaSpider
    ;
    ;===============================================================================

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

    Func _INetGetSourcePost($sURL, $sPost)
    Local $iSocket, $sHeader, $sRecv, $iIP, $sHost, $aRegExp, $sHttp1,$iErr,$iSend,$aReturn[2]

    If $sURL = '' OrOr $sPost = '' Then Return SetError(1, 0, 0)

    If StringLeft($sURL, 7) <> 'http://' AndAnd StringLeft($sURL, 8) <> 'https://' Then $sURL = "http://" & $sURL
    If StringRight($sURL, 1) <> "/" Then $sURL &= "/"

    $aRegExp = StringRegExp($sURL, "http?://(.*?)/", 3)
    If @error Then Return SetError(2, 0, 0)

    $sHost = $aRegExp[0]
    If $sHost = '' Then Return SetError(3, 0, 0)

    $sHttp1 = StringTrimLeft($sURL,StringInStr($sURL,"/",-1,3)-1)
    If $sHttp1 = '' Then Return SetError(3, 0, 0)


    $sHeader = "POST " & $sHttp1 & " HTTP/1.1" & @CRLF & _
    "Host: " & $sHost & @CRLF & _
    "User-Agent: AutoIt v3" & @CRLF & _
    "Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost


    TCPStartup() ;If not already done
    $iIP = TCPNameToIP($sHost)
    If $iIP = '' OrOr StringInStr($iIP, ".") = 0 Then Return SetError(4, 0, 0)
    $iSocket = TCPConnect($iIP, 80)
    If @error OrOr $iSocket < 0 Then Return SetError(5, 0, 0)

    $iSend = TCPSend($iSocket, $sHeader)
    If @error OrOr $iSend < 1 Then Return SetError(6, 0, 0)


    While 1
    $sRecv = TCPRecv($iSocket, 1024)
    $iErr = @error
    If $sRecv <> '' Then
    While 1
    $sRecv &= TCPRecv($iSocket, 1024)
    If @error Then ExitLoop 2
    WEnd
    EndIf
    If $iErr Then Return SetError(7,0,0)
    WEnd

    $aReturn[0] = StringLeft($sRecv,StringInStr($sRecv,@CRLF&@CRLF)-1)
    $aReturn[1] = StringTrimLeft($sRecv,StringLen($aReturn[0])+4)
    Return $aReturn
    EndFunc ;==>_INetGetSourcePost

    [/autoit]


    Damit kriegst du schonmal den Quelltext ;)

  • ja das mit dem quelltext hätte ich auch selber hinbekommen mit winhttp z.b.
    aber mein problem ist es diesen quelltext von autoit wieder zu einer tabelle zusammenfürhen zu lassen.

    mfg

  • Du machst mit StringBetween den Anfang der Tabelle <table> bis zum ende </table> und schreibst diese entweder auf eine .html Seite, wodurch du ihn dir per IECreate usw. ausgeben lassen kannst.

  • Macht autoit es dann nur so, das man es lesen kann auf die GUi oder auch so, das man sich auf links weiterklicken kann? Denn es sollte nicht zu viel ram verbrauchen.
    mfg

  • Mit IECreate machst du ein IEFenster auf deiner GUI :D

    Nein, mit _IECreateEmbedded machst du ein Internet Explorer Fenster auf deinen GUI. Den Rückgabewert musst du dann mit GUICtrlCreateObj in das GUI zeichnen. Wenn du den String zwischen <table> und </table> hast kannst du ihn in ein vorher erstelltes _IECreateEmbedded mit

    [autoit]

    _IEDocWriteHTML

    [/autoit]

    In das IE Objekt schreiben, was dann den HTML in eine Tabelle umformt.