skip to the main content area of this page


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>
# 

  

Resurse pentru preluat cursurile BNR/BCE
de catre programatori / site-uri / oameni
obsolete
  • cursuri.rss
  • rss.aspx