Python. Получение данных о курсе валют.

В процессе изучения языка python, а именно работа с XML, мной в учебных целях был написан скрипт получающий значения валют в рублях с сайта ЦБР (http://www.cbr.ru/).

Получаемый XMl файл выглядит следующим образом:

<ValCurs Date="10.02.2015" name="Foreign Currency Market">
<Valute ID="R01010">
<NumCode>036</NumCode>
<CharCode>AUD</CharCode>
<Nominal>1</Nominal>
<Name>Австралийский доллар</Name>
<Value>51,2242</Value>
</Valute>
<Valute ID="R01020A">
<NumCode>944</NumCode>
<CharCode>AZN</CharCode>
<Nominal>1</Nominal>
<Name>Азербайджанский манат</Name>
<Value>83,9695</Value>
</Valute>
<Valute ID="R01035">
<NumCode>826</NumCode>
<CharCode>GBP</CharCode>
<Nominal>1</Nominal>
<Name>Фунт стерлингов Соединенного королевства</Name>
<Value>100,2974</Value>
</Valute>
 
...

полную его версию можно посмотреть по ссылке: http://www.cbr.ru/scripts/XML_daily.asp?date_req

Чтоб получить значения здесь и сейчас:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import urllib
from xml.etree import ElementTree as ET
 
id_dollar = "R01235"
id_evro = "R01239"
 
valuta = ET.parse(urllib.urlopen("http://www.cbr.ru/scripts/XML_daily.asp?date_req"))
 
for  line in valuta.findall('Valute'):
    id_v = line.get('ID')
    if id_v == id_dollar:
        rub = line.find('Value').text
        print "\nКурс доллара",rub,"рублей"
    if id_v == id_evro:
        rub = line.find('Value').text
        print "\nКурс евро",rub,"рублей"

Чтоб использовать функцию в других скриптах:

import urllib
import datetime
from xml.etree import ElementTree as ET
 
def dollar_evro():
 
    """Получает значения доллара и евро в рублях на время запуска.
    Данные берутся с сайта ЦБР.
    Возвращает значение доллара в рублях, евро в рублях, дату."""
 
    id_dollar = "R01235"
    id_evro = "R01239"
 
    valuta = ET.parse(urllib.urlopen("http://www.cbr.ru/scripts/XML_daily.asp?date_req"))
 
    for  line in valuta.findall('Valute'):
        id_v = line.get('ID')
        if id_v == id_dollar:
            rub_dollar = line.find('Value').text
        if id_v == id_evro:
            rub_evro = line.find('Value').text
    today = datetime.date.today()
    return rub_dollar,rub_evro,today
 
if __name__ == "__main__":
    print dollar_evro()

Результат выполнения первого скрипта будет следующим:

root@my-test-car:~/script/python/xml# ./valuta.py
 
Курс доллара 65,7817 рублей
 
Курс евро 74,5833 рублей

Аналогично можно получить значения и других валют.

2 Comments

  1. Петя

    Как вы получили файл XML?
    Как получилась ссылка «http://www.cbr.ru/scripts/XML_daily.asp?date_req»?
    Заранее спасибо)

Comments are closed.