aktueller Währungs-Kurs auslesen

  • Hallo zusammen

    gibt es eine Möglichkeit den Kurs auszulesen bzw. einen anderen Betrag einzugeben.

    Ich habe bereits eine Funktion gefunden, welche die Homepage automatisch öffnet. Aber leider weiss ich nicht wie ich auf das Feld Kurs zugreifen kann.

    [autoit]

    #include <FF.au3>

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

    _FFStart("http://www.oanda.com/lang/de/currency/converter/")

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

    If _FFIsConnected() Then

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

    EndIf

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

    [Blockierte Grafik: http://www.bilder-space.de/bilder/f20c0b-1309447679.jpg#]

    MfG
    johny1099

    Einmal editiert, zuletzt von johny1099 (1. Juli 2011 um 13:23)

  • Guten Morgen zusammen

    ich habe in der Zwischenzeit versucht eine Lösung zu finden. Hierbei habe ich noch eine Funktion _FFReadHTML() gefunden. Was haltet ihr davon es so zu machen?

    [autoit]

    #include <File.au3>
    #include <String.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <ff.au3>

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

    Dim $arr, $string_html,$kurs

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

    Dim $start_search_string = '<input name="base_amount" id="form_base_amount_input_hidden" value="'
    Dim $end_search_string = '" type="hidden">'
    If FileExists(@ScriptDir & '\oanda_output.txt') Then FileDelete(@ScriptDir & '\oanda_output.txt')
    _FFStart("http://www.oanda.com/lang/de/currency/converter/")
    If _FFIsConnected() Then
    $string_html = _FFReadHTML("body")
    FileWriteLine(@ScriptDir & '\oanda_output.txt', $string_html)
    _FileReadToArray(@ScriptDir & '\oanda_output.txt', $arr)
    For $i = 1 To $arr[0]
    If StringInStr($arr[$i], $start_search_string) Then
    $kurs = _StringBetween(StringStripWS($arr[$i],1),$start_search_string,$end_search_string)
    MsgBox(0, "Kurs Euro ==> US Dollar", 'Der aktuelle Kurs: ' &$kurs[0] )
    ExitLoop
    EndIf
    Next
    EndIf
    _FFQuit()

    [/autoit]

    MfG
    johny1099

  • Hallo Johny,

    ich habe bereits ein Tool geschrieben, welches mir Umrechnungskurse einliest:

    [autoit]

    Func getWaehrungskurse()
    SplashTextOn("","Währungskurse werden von der internationelen EZB-Seite abgerufen",300,80)
    $oIE = _IECREATE("http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html",0,0)
    $HTML = _IEBodyReadHTML($oIE)
    _IEQUIT($oIE)

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

    ;Norwegische Kronen auslesen
    $Start = StringInStr($HTML,"<TD class=alignLeft headers=ab>Norwegian krone </TD>")
    $Ende = StringInStr($HTML,"</SPAN>",0,1,$Start)
    $Kurs_NOK = StringReplace(StringMid($HTML,$Start,$Ende-$Start),"<TD class=alignLeft headers=ab>Norwegian krone </TD>" & @CRLF & "<TD class=spot headers=ac><SPAN class=rate>","")

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

    ;Polish zloty
    $Start = StringInStr($HTML,"<TD class=alignLeft headers=ab>Polish zloty </TD>")
    $Ende = StringInStr($HTML,"</SPAN>",0,1,$Start)
    $Kurs_PLN = StringReplace(StringMid($HTML,$Start,$Ende-$Start),"<TD class=alignLeft headers=ab>Polish zloty </TD>" & @CRLF & "<TD class=spot headers=ac><SPAN class=rate>","")

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

    SplashOff()

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

    Return $Kurs_NOK & ";" & $Kurs_PLN
    ;~ MsgBox("","",_GUICtrlListView_GetItemTextString($UmrechnerListe,1))

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

    EndFunc

    [/autoit]

    Bitte beachte, dass du aus rechtlichen Gründen angeben musst, woher du die Kurse hast.
    VIelleicht hilft dir das ja weiter

    Ciao,
    Saft

  • Hallo Saft

    vielen Dank für deinen Beitrag zu meiner Frage. Soweit ich das beurteile ist dies für den Internet Explorer.
    Ich benötige aber ein Script für FireFox.

    MfG
    johny1099

    • Offizieller Beitrag

    Warum einen Browser dafür bemühen?
    INetRead holt Dir doch auch den Quelltext der Seite:

    Spoiler anzeigen
    [autoit]


    MsgBox(0, 0, getWaehrungskurse())

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

    Func getWaehrungskurse()
    Local $HTML, $Kurs_NOK, $Kurs_PLN
    SplashTextOn("", "Währungskurse werden von der internationelen EZB-Seite abgerufen", 300, 80)
    $HTML = InetRead("http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html")
    If @error Then Return SetError(1, 0, 0)
    $HTML = BinaryToString($HTML)
    ;~ ConsoleWrite($HTML & @CR)
    $Kurs_NOK = StringRegExpReplace($HTML, '(?s).+>Norwegian krone </td>.+?"rate">(.+?)<.+', '$1')
    $Kurs_PLN = StringRegExpReplace($HTML, '(?s).+>Polish zloty </td>.+?"rate">(.+?)<.+', '$1')
    SplashOff()
    Return $Kurs_NOK & @CR & $Kurs_PLN
    EndFunc ;==>getWaehrungskurse

    [/autoit]
  • Arg, das erfahre ich erst jetzt?!
    Das spart mir ne Menge Programmieraufwand und Zeit, vielen Dank!

    Ich habe noch nie etwas mit Firefox gemacht, sorry

  • Hallo Oscar

    ich versuche leider vergebens deine Variante anzuwenden.


    Wenn ich den Inhalt in ein Output File schreibe und darin suche kann ich leider den aktuellen Kurs nicht sehen.

    Kannst Du mir bitte weiterhelfen?

    [autoit]

    If FileExists(@ScriptDir & '\testoutput.txt') Then FileDelete(@ScriptDir & '\testoutput.txt')

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

    MsgBox(0, 0, getWaehrungskurse())

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

    Func getWaehrungskurse()
    Local $HTML, $Kurs_NOK, $Kurs_PLN
    $HTML = InetRead("http://www.oanda.com/lang/de/currency/converter/")
    If @error Then Return SetError(1, 0, 0)
    $HTML = BinaryToString($HTML)
    ConsoleWrite($HTML & @CR)
    Filewrite(@ScriptDir & '\testoutput.txt',$HTML)

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

    EndFunc ;==>getWaehrungskurse

    [/autoit]

    MfG
    johny1099

    • Offizieller Beitrag

    Ich weiss nicht genau, ob ich das Javascript richtig interpretiere, deshalb "ohne Gewähr"!

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

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

    $aRates = getWaehrungskurse()
    _ArrayDisplay($aRates)

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

    Func getWaehrungskurse()
    Local $HTML, $sRates, $sCurr, $aRates, $aCurr
    $HTML = InetRead("http://www.oanda.com/lang/de/currency/converter/")
    If @error Then Return SetError(1, 0, 0)
    $HTML = BinaryToString($HTML)
    ;~ ConsoleWrite($HTML & @CR)
    $sRates = StringRegExpReplace($HTML, '(?s).+\{"askRates"\:\[(.+?)\].+', '$1')
    If @error Then Return SetError(1, 0, 0)
    $aRates = StringSplit($sRates, ',')
    $sCurr = StringRegExpReplace($HTML, '(?s).+,"pairs"\:\[(.+?)\].+', '$1')
    If @error Then Return SetError(2, 0, 0)
    $aCurr = StringSplit($sCurr, ',')
    For $i = 1 To $aCurr[0]
    $aRates[$i] = StringReplace($aCurr[$i], '"', '') & ' = ' & StringReplace($aRates[$i], '"', '')
    Next
    Return $aRates
    EndFunc ;==>getWaehrungskurse

    [/autoit]
  • Hallo Oscar

    ich habe dein Script soeben getestet. Aus meiner Sicht funktioniert es einwandfrei.

    Vielen Dank für die grosse Hilfe zur Lösung meines Problems.

    MfG

    johny1099