Je cherche à récupérer les résultat d'une page web avec les expressions régulières !
Ce petit script permettrait de convertir une monnaie en une autre, ici us dollar en euro à partir d'une page msn!
Merci de votre aide


Code : Tout sélectionner
#Include <Inet.au3>
Global $MoneyFrom = 1
Global $MoneyTo = 9
Global $Value = 10
MsnMoney()
Func MsnMoney()
Local $sUrl = "http://uk.moneycentral.msn.com/investor/market/crncconverter.asp?iCurIdFrom="&$MoneyFrom&"&iCurIdTo="&$MoneyTo&"&dAmt="&$Value
$sSource = _INetGetSource($sUrl)
If @error Then Return SetError(1)
$sVal = StringRegExp($sSource, 'heading1black">(\d+\.\d{5})\sEuro</td>', 3)
MsgBox(0, "***", $sVal[0])
EndFunc
Code : Tout sélectionner
$sVal = StringRegExp($sSource, 'heading1black">(\d{0,3}\,?\d{0,3}\.\d{5})(\sBil)?(\sMil)?(\sEuro)</td>', 3)
MsgBox(0, "***", $sVal[0] & $sVal[1] & $sVal[2] & $sVal[3])



Exact. Je suis resté dans l'exemple demandé sans porter attention à d'autres monnaies.jchd a écrit :Pourquoi vouloir matcher le libellé de la monnaie ? Seul le taux de change est utile.
Oui, supprimer "(\sEuro)</td>" de l'expression régulière. Ensuite à vous d'adapter votre code à votre convenancepierrotm777 a écrit :Vous auriez une solution ?


Code : Tout sélectionner
Stringregexp($source, "<td class="heading1black">([[:digit:],.]+) " & $devise & "</td>", 3 )
Pas de souci. Voici un exemple de code, il en existe d'autres ...pierrotm777 a écrit :Désolé mais je ne vois pas
Code : Tout sélectionner
Func MsnMoney()
Local $sUrl = "http://uk.moneycentral.msn.com/investor/market/crncconverter.asp?iCurIdFrom="&$MoneyFrom&"&iCurIdTo="&$MoneyTo&"&dAmt="&$Value
; ConsoleWrite(_INetGetSource($sUrl))
$sSource = _INetGetSource($sUrl)
If @error Then Return SetError(1)
$sVal = StringRegExp($sSource, 'heading1black">(\d{0,3}\,?\d{0,3}\.\d{5})(\sMil)?(\sBil)?', 3)
$sVal[0] = StringReplace($sVal[0], ",", "")
If UBound($sval) = 3 Then
$sResult = $sVal[0] * 1000000000
ElseIf UBound($sval) = 2 Then
$sResult = $sVal[0] * 1000000
Else
$sResult = $sVal[0]
EndIf
MsgBox(0, "***", $sResult & " " & $Money)
EndFunc ;==>MsnMoney
Code : Tout sélectionner
StringRegExp($sSource, 'heading1black">(\d{0,3}\,?\d{0,3}\.\d{5})(\sMil)?(\sBil)?', 3)
C'est bien la première foispierrotm777 a écrit :FerdinandG
Code : Tout sélectionner
$pseudo = StringReplace($pseudo, "di", "")Code : Tout sélectionner
StringRegExp($sSource, 'heading1black">(\d{0,3}\,?\d{0,3}\.\d{5})(\sMil)?(\sBil)?', 3)

Attention, cela ne fonctionne pas si le résultat est supérieur à 999999bloodwolff a écrit :Comme j'avais du temps à perdre ...





Code : Tout sélectionner
[spoiler=]ConvertMoney(9,1,10000)
Func ConvertMoney($MoneyFrom,$MoneyTo,$Value)
;#cs
Dim $devise[108][2] = [ _
[1, " US dollar"], _
[2, "Canadian dollar"], _
[3, "British pound"], _
[7, "Japanese yen"], _
[8, "Australian dollar"], _
[9, "Euro"], _
[10, "Argentine Peso"], _
[13, "Bolivian Boliviano"], _
[14, "Brazilian real"], _
[15, "Swiss franc"], _
[16, "Chilean peso"], _
[17, "Chinese yuan"], _
[18, "Colombian Peso"], _
[19, "Czech koruna"], _
[20, "Danish krone"], _
[24, "Hong Kong dollar"], _
[25, "Hungarian forint"], _
[26, "Indonesian rupiah"], _
[28, "Korean Won"], _
[30, "Mexican Peso"], _
[32, "New Zealand dollar"], _
[33, "Norwegian krone"], _
[34, "Peruvian nuevo sol"], _
[37, "Russian Rouble"], _
[39, "Swedish krona"], _
[40, "Singapore dollar"], _
[41, "Thai baht"], _
[42, "Taiwan Dollar"], _
[43, "Venezualan Bolivar"], _
[44, "South African rand"], _
[45, "Guatemalan quetzal"], _
[46, "Moroccan Dirham"], _
[47, "Tunisian dinar"], _
[48, "Algerian dinar"], _
[49, "New Turkish Lira"], _
[50, "new Israeli shekel"], _
[51, "Malaysian ringgit"], _
[52, "Botswana pula"], _
[53, "Ghanaian Cedi"], _
[54, "Kenyan Shilling"], _
[55, "Namibian dollar"], _
[56, "Zimbabwe dollar"], _
[57, "Baharaini Dinar"], _
[59, "Indian rupee"], _
[60, "Jordanian Dinar"], _
[61, "Kuwaiti dinar"], _
[63, "Omani Rial"], _
[64, "Pakistan rupee"], _
[65, "Philippine Peso"], _
[66, "Qatari Rial"], _
[67, "Saudi Riyal"], _
[68, "Tanzanian Shilling"], _
[69, "Emirati Dirham"], _
[70, "Vietnamese dong"], _
[92, "Egyptian pound"]]
$source = BinaryToString(InetRead("http://uk.moneycentral.msn.com/investor/market/crncconverter.asp?iCurIdFrom=" & $devise[$MoneyFrom][0] & "&iCurIdTo=" & $devise[$MoneyTo][0] & "&dAmt=" & $Value))
$sVal = Stringregexp($source, '<td class="heading1black">([[:digit:],.]+(?: Mil| Bil)?)'& $devise[$MoneyTo][1] &'</td>', 3 )
msgbox(0,"***","MoneyFrom :"& $devise[$MoneyFrom][1] &@CRLF& "MoneyTo :"&$devise[$MoneyTo][0] &@CRLF& $devise[9][0] &@CRLF& $devise[$MoneyTo][1] &@CRLF&$sVal)
return $sVal[/spoiler]
Code : Tout sélectionner
'<td class="heading1black">([[:digit:],.]+(?: Mil| Bil)?)[color=#FF0000]\s[/color]'& $devise[$MoneyTo][1] &'</td>'