Python : Preluarea cursului valutar de pe infovalutar.ro
[ by Daniel Anechitoaie -
www.safereaction.ro ]
1. Parsing XML - [
top ]
import xml.dom.minidom
import urllib
def GetInfoValutar():
def getText(nodelist):
rc = ""
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc = rc + node.data
return rc
try:
fp = urllib.urlopen("http://www.infovalutar.ro/curs.rss");
except IOError:
return -1
buff = fp.read()
fp.close()
dom = xml.dom.minidom.parseString(buff)
items = dom.getElementsByTagName("item")
nfoVal = []
for item in items:
moneda = getText(item.getElementsByTagName("title")[0].childNodes)
valoare = getText(item.getElementsByTagName("description")[0].childNodes)
link = getText(item.getElementsByTagName("link")[0].childNodes)
nfoVal.append((moneda, valoare, link))
return nfoVal
test = GetInfoValutar()
if test == -1:
print "Eroare citire!"
else:
for i in test:
print "%s = %s - %s" % i
#
# <OUTPUT>
#
# USD = 2.5814 - http://www.infovalutar.ro/2006/12/7/USD.bnr
# EUR = 3.4295 - http://www.infovalutar.ro/2006/12/7/EUR.bnr
# XDR = 3.9125 - http://www.infovalutar.ro/2006/12/7/XDR.bnr
# XAU = 52.3017 - http://www.infovalutar.ro/2006/12/7/XAU.bnr
# TRY = 1.799 - http://www.infovalutar.ro/2006/12/7/TRY.bnr
# SEK = 0.3796 - http://www.infovalutar.ro/2006/12/7/SEK.bnr
# PLN = 0.8988 - http://www.infovalutar.ro/2006/12/7/PLN.bnr
# NOK = 0.4234 - http://www.infovalutar.ro/2006/12/7/NOK.bnr
# MDL = 0.2027 - http://www.infovalutar.ro/2006/12/7/MDL.bnr
# JPY = 2.2466 - http://www.infovalutar.ro/2006/12/7/JPY.bnr
# HUF = 0.013366 - http://www.infovalutar.ro/2006/12/7/HUF.bnr
# GBP = 5.0804 - http://www.infovalutar.ro/2006/12/7/GBP.bnr
# EGP = 0.4514 - http://www.infovalutar.ro/2006/12/7/EGP.bnr
# DKK = 0.4599 - http://www.infovalutar.ro/2006/12/7/DKK.bnr
# CZK = 0.1224 - http://www.infovalutar.ro/2006/12/7/CZK.bnr
# CHF = 2.1588 - http://www.infovalutar.ro/2006/12/7/CHF.bnr
# CAD = 2.2484 - http://www.infovalutar.ro/2006/12/7/CAD.bnr
# AUD = 2.0403 - http://www.infovalutar.ro/2006/12/7/AUD.bnr
#
# </OUTPUT>
#
2. Citirea cursului unei monede la o anumita data - [
top ]
import urllib
import re
def GetCursValutar(y, m, d, moneda):
try:
fp = urllib.urlopen("http://www.infovalutar.ro/" + y + "/" + m
+ "/" + d + "/" + moneda + ".bnr");
except IOError:
return -1
curs = fp.read()
fp.close()
if re.compile("^not.*$").search(curs):
return -2
return curs
def GetCursValutarForToday(moneda):
try:
fp = urllib.urlopen("http://www.infovalutar.ro/azi/" + moneda + ".bnr");
except IOError:
return -1
curs = fp.read()
fp.close()
return curs
y = "2005"
m = "10"
d = "12"
moneda = "EUR"
ex1 = GetCursValutar(y, m, d, moneda)
if ex1 == -1:
print "Eroare citire!"
elif ex1 == -2:
print "Valoarea nu a fost gasita pentru %s din %s/%s/%s " % (moneda, d, m, y)
else:
print "Cursul valutar pentru %s din %s/%s/%s este %s" % (moneda, d, m, y, ex1)
y = "2008"
m = "10"
d = "12"
moneda = "EUR"
ex2 = GetCursValutar(y, m, d, moneda)
if ex2 == -1:
print "Eroare citire!"
elif ex2 == -2:
print "Valoarea nu a fost gasita pentru %s din %s/%s/%s " % (moneda, d, m, y)
else:
print "Cursul valutar pentru %s din %s/%s/%s este %s" % (moneda, d, m, y, ex2)
moneda = "USD"
ex3 = GetCursValutarForToday(moneda)
if ex3 == -1:
print "Eroare citire!"
else:
print "Cursul valutar de astazi pentru %s este %s" % (moneda, ex3)
#
# <OUTPUT>
#
# Cursul valutar pentru EUR din 12/10/2005 este 3.5906
# Valoarea nu a fost gasita pentru EUR din 12/10/2008
# Cursul valutar de astazi pentru USD este 2.5814
#
# </OUTPUT>
#