Aktienwert in einem Fenster darstellen

  • Hallo ich bin neu hier und Anfänger,
    ich würde gerne ein ein Fenster erstellen der mir den aktuellen Aktienwert anzeigt. Ich verwende Fierfox, habe MozRepl und die FF.au3 installiert und das Funktioniert auch. Hab es schon geschaft verschiedene Fenster und Zugangsdaten automatisch einzutragen.

    Auf dieser Seite würde ich gerne die Grafik und den Rücknahmepreis auslesen und in einem Fenster darstellen.
    http://www.ariva.de/fonds/profil.m?secu=3399

    wenn mir jemand helfen könnte wär das super.

    Vielen Dank

  • Hi und willkommen im Forum :),
    man kann den Wert bestimmt viel geschickter auslesen, als den Quelltext auszuwerten, aber ich weiß nicht wie (gell Stilgar :P).

    Spoiler anzeigen
    [autoit]

    #include <Inet.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    InetGet("http://www.ariva.de/chart/images/chart.m?secu=3399&t=year&size=M&nocache=1&volume=0&boerse_id=8&clean_payout=1&currency=EUR", @TempDir & "\boerse.png", 1)
    $source = StringRegExp(_INetGetSource("http://www.ariva.de/fonds/profil.m?secu=3399"), '<td class="arrow0" style="font-size: 20px; padding: 5px 0px 5px 3px">(.*?)&nbsp;&euro;</td>', 3)

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

    $hGUI = GUICreate("", 375, 250)
    GUICtrlCreateLabel("Rücknahmepreis: " & $source[0], 10, 228)

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

    ; Load PNG image
    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile(@TempDir & "\boerse.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

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

    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
    GUISetState()

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()

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

    ; Draw PNG image
    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_PAINT

    [/autoit]

    anno2008

    /Edit:
    Ich weiß nicht wies mit dem Copyright von Ariva.de aussieht. Darf man da einfach so Daten weiterverarbeiten?

  • Vielen Dank das ist perfekt!

    Wenn ich mir den Quellcode so ansehe.....mann oh mann da hab ich ja noch viel zu lernen.
    Ich denke es gibt keine Probleme mit den Daten ich, ich will nur nicht jeden Tag auf die Seite manuell zugreifen,
    ich möchte nur den Wert meiner Aktien wissen.

    Nochmal VIIIIIIIIIIIELEN DANK für die schnelle Hilfe!!!!!

  • anno2008:
    Was soll das denn heisen? :D

    Wenn eh schon FF im Einsatz ist, wäre die Tabelle auslesen in dem Fall:

    [autoit]

    $aTabelle = _FFTableWriteToArray($Socket,8)
    msgbox(64,"Rücknahmepreis:",$aTabelle[0][1])

    [/autoit]

    Schneller wäre allerdings:

    [autoit]

    $sPreis = _FFSetGet($Socket,".getElementsByTagName('tbody')[8].getElementsByTagName('tr')[1].getElementsByTagName('td')[0].textContent")

    [/autoit]


    :P

  • Danke Stilgar,

    dann versuch ich mal das einzubinden.....gibt es eigentlich eine Möglichkeit das Fenster an der
    rechten Bildschirmseite auszurichten, oder muss immer die der Positionswert angegeben werden.

  • Mal eine Frage, woher weist du in was für einer Zeile und welcher wert du reinschreiben sollst.
    Kann man sich die Tabelle der Seite anschauen, ich weis nur wie ich den HTML Code der Seite anschauen kann.

    Danke

  • Wenn man sich mit HTML auskennt, kann man das schon im Quelltext sehen.
    Alternativ kannst du den Quelltext in NVU laden (ein anderes Programm fällt mir grad net ein), da sieht man die Tabellen auch und kann dann entsprechend zählen

    Padmak

  • Die Seite hat leider 15 verschachtelte Tabellen - etwas mühselig da im Quelltext zu suchen.

    Als grobe einfache Lösung:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <FF.au3>

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

    $Socket = _FFConnect()
    For $i = 0 To _FFGetLength($Socket,"tables")-1
    $aTabelle = _FFTableWriteToArray($Socket,$i)
    _ArrayDisplay($aTabelle,"Tabelle Nr: " & $i)
    Next

    [/autoit]

    und dann eben suchen wo es drin steht.

    Einmal editiert, zuletzt von Stilgar (15. Februar 2009 um 22:00)

  • Geht nun etwas "einfacher", ohne den Quelltext anzugsehen:

    Mit der neuesten Version der FF.au3 ist folgendes möglich:

    [autoit]

    MsgBox(64,"",_FFGetValueByXPath($Socket, "//td[@class='arrow0' and position()=1]", "string", 1))

    [/autoit]


    :D

    Das muß man sich allerdings nicht selber ausdenken, sondern kann das FF-Addon XPather verwenden:
    Einfach das gewünschte Element markieren (die Zahl), im Context Menü XPather aufrufen und aus dem Ergebnis den letzten Abschnitt verwenden (siehe Bild) und in den obigen Befehl einsetzen, allerdings mit zwei führenden //

    Wenn allerdings dort nur ein "Pad" steht, muß man eben probieren wie weit man diesen kürzen kann, damit das Ergebnis noch eindeutig ist.

  • Zitat

    dann versuch ich mal das einzubinden.....gibt es eigentlich eine Möglichkeit das Fenster an der
    rechten Bildschirmseite auszurichten, oder muss immer die der Positionswert angegeben werden.

    Klar geht das:

    [autoit]

    #include <GUIConstantsEx.au3>
    $width = 200 ;breite der GUI
    $gui = GUICreate("Dein Fenster", $width, 300, @DesktopWidth - $width, -1)
    ;evt noch etwas mehr abziehn anstatt nur $width wenn ein kleiner abstand zum Bildschirmrand bleiben soll
    GUISetState()
    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Hi,

    ich möchte da was ähnliches machen hab da auch schon ein wenig rumgebastelt aber da ich leider nicht wirklich die ahnung habe frag ich lieber hier nochmal nach.

    möchte mir in einem fenster die beiden skalen anzeigen lassen.
    http://de.advfn.com/p.php?pid=staticchart&s=NB^GNTA&p=0&t=39&vol=1
    http://de.advfn.com/p.php?pid=staticchart&s=NO^WAMUQ&p=0&t=39&vol=1

    wenn möglich nebeneinander. zusätzlich würde ich gerne das hier mit einbauen
    http://www.ariva.de/quote/profile.m?secu=100258495&kx=s (Letzter 0,011 $ Vortag 0,0093 $ Umsatz 2,33 M $ Veränderung +18,27% Stand:uhrzeit)
    http://www.ariva.de/quote/profile.m?secu=5792&kx=s (Letzter 0,079 € Vortag 0,081 € Umsatz 117 T € Veränderung -2,47% Stand: uhrzeit)

    so das die zahlen sich im dem tool dann aktualisieren sobald das auf der homepage passiert.

    achja kann ich irgendwie die beiden bilder die mir da von dem link angezeigt werden größer als 300x300 machen und einstellen das alle 2 sec aktualisiert wird?


    wäre echt mega klasse wenn mir da jemand weiter helfen kann.


    hier das was ich umgebaut habe das es vieleicht ein wenig einfacher ist

    Spoiler anzeigen

    #include <Inet.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>


    InetGet("http://de.advfn.com/p.php?pid=staticchart&s=NB^GNTA&p=0&t=39&vol=1", @TempDir & "\boerse.png", 1) ;link 1
    InetGet("http://de.advfn.com/p.php?pid=staticchart&s=NO^WAMUQ&p=0&t=39&vol=1", @TempDir & "\boerse.png2", 2) ;Link 2

    $hGUI = GUICreate("", 600, 300)
    $hGUI = GUICreate("", 600, 300)
    ; Load PNG image link 2
    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile(@TempDir & "\boerse.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    ; Load PNG image link 1
    $hImage2 = _GDIPlus_ImageLoadFromFile(@TempDir & "\boerse.png2")
    $hGraphic2 = _GDIPlus_GraphicsCreateFromHWND($hGUI)

    ;link 1
    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
    GUISetState()
    ;link 2
    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT2")
    GUISetState()


    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ; Clean up resources link 1
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()

    ; Clean up resources link 2
    _GDIPlus_GraphicsDispose($hGraphic2)
    _GDIPlus_ImageDispose($hImage2)
    _GDIPlus_Shutdown()

    ; Draw PNG image link 1
    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_PAINT


    ; Draw PNG image link 2
    Func MY_WM_PAINT2($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic2, $hImage2, 300, 0)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_PAINT