Voici mon approche, en ASP :
J'ai besoin d'un parser xml :
Set xml = Server.CreateObject ("Microsoft.XMLHTTP")
les pages de yahoo reçoivent ça en paramètre :
q?s=[CODE_DEVISE][CODE_DEVISE2]=X
pour connaître combien vaut 1DEVISE en DEVISE2.
j'ai donc les CODE_DEVISE dans une table. Je ne m'intéresse qu'au taux de change vers l'euro ou le dollar, ces deux DEVISE2 ne sont donc pas tablées; si tu dois croiser tes devises, il te faudra lire les DEVISE et DEVISE2 dans une table (qui peut être la même évidemment, que tu lis deux fois).
J'appelle donc ceci :
sURL = "http://finance.yahoo.com/q?s=" & RSD("sURL_CODE") & "eur=X"
Call GetAndUpdate(sURL, "eur")
sURL = "http://finance.yahoo.com/q?s=" & RSD("sURL_CODE") & "usd=X"
Call GetAndUpdate(sURL, "usd")
ma fonction GetAndUpdate parse le xml, récupère le taux de change (présent dans un span identifié par "yfs_l10_[CODE_DEVISE][CODE_DEVISE2]=x"), et envoie un mail de log à la fin, en mettant en rouge la ligne s'il y a eu erreur ou si la différence par rapport à la veille est de plus de 5% (par mesure de précaution, complètement optionnel) :
xml.Open "GET", theUrl , false
xml.Send
text = xml.ResponseText
text = Mid(text,Instr(1,text,"<span id=""yfs_l10_" & RSD("sURL_CODE") & sdev & "=x"">")+Len("<span id=""yfs_l10_" & RSD("sURL_CODE") & sdev & "=x"">"),6)
if isNumeric(text) then
text = Cdbl(text)
nverif = text - RSD(sField)
if nverif < 0 then nverif = nverif * -1
nverif = (nverif / RSD(sField)) * 100
sMailBody = sMailBody & "<br>" & theUrl & " : " & text
else
nverif = 100
end if
if nverif > 5 then
nError = nError + 1
sMailBody = sMailBody & "<span color=red> Warning : diff = " & nverif & "% (htm value:" & text & ")</span>"
end if
J'espère que ça a pu t'aider.