Экспорт курсов обмена валют в банках Волгограде в xml.

Вы можете разместить на своем сайте таблицу с курсами обмена валют в банках вашего города. Сайт KOVALUT.RU предлагает данные в формате XML о курсах валют в банках Волгограда и курсах валют Центрального Банка России (ЦБ).

Внимание! Использование информации, представленной в XML формате, допускается только при условии, что непосредственно над или под блоком с информацией о курсах валют на вашей странице будет указана ссылка на источник информации. Гиперссылка должна указывать на страницу сайта KOVALUT.RU с курсами валют в Волгограде:

https://kovalut.ru/kurs/volgograd/

Загрузить таблицу с курсами валют в банках Волгограда в формате XML можно с адреса:

https://informer.kovalut.ru/webmaster/xml-table.php?kod=3401

Ниже располагаются: пример содержания XML; описание формата XML; пример PHP скрипта.

Содержание XML данных выглядит так:


<?xml version="1.0" encoding="utf-8"?> <Exchange_Rates>С 12 февраля 2021 года в соответствии с уведомлением от 12 января 2021 года отключена возможность копирования курсов обмена валют с сайта kovalut.ru. Просьба перейти на другие способы получения курсов обмена валют.</Exchange_Rates>


Описание формата XML:

Actual_Rates Контейнер с банками, у которых на текущий момент есть свежая информация о курсах валют:
  Bank Контейнер с информацией о банке:
   Name Наименование банка
   Url Ссылка на информацию о банке в городе на сайте KOVALUT.RU
   USD информация о курсах доллара:
    Buy курс покупки доллара в банке
    Sell курс продажи доллара в банке
   EUR информация о курсах евро:
    Buy курс покупки евро в банке
    Sell курс продажи евро в банке
   ChangeTime Время (местное) изменения курсов банка
Not_Actual_Rates Контейнер с банками у которых на текущий момент информация о курсах валют устарела
City Контейнер с информацией о городе, для которого предоставляются курсы валют в банках:
  Name наименование города
  Url ссылка на сайт с курсами валют в городе
  Simple_Date дата курсов валют в текстовом формате
  Digital_Date дата курсов валют в цифровом формате
  USD информация о курсах доллара:
    Buy лучший курс покупки доллара в банках города
    Sell лучший курс продажи доллара в банках города
  EUR информация о курсах евро:
    Buy лучший курс покупки евро в банках города
    Sell лучший курс продажи евро в банках города
Central_Bank_RF информация о курсах валют Центрального Банка России (ЦБ):
  USD информация о курсах доллара:
    New информация о новом (последнем по времени) курсе ЦБ:
      Digital_Date дата курсов валют в цифровом формате
      Exch_Rate курс обмена ЦБ
    Old информация о старом (предпоследнем по времени) курсе ЦБ:
      Digital_Date дата курсов валют в цифровом формате
      Exch_Rate курс обмена ЦБ
  EUR информация о курсах евро:
    New информация о новом (последнем по времени) курсе ЦБ:
      Digital_Date дата курсов валют в цифровом формате
      Exch_Rate курс обмена ЦБ
    Old информация о старом (предпоследнем по времени) курсе ЦБ:
      Digital_Date дата курсов валют в цифровом формате
      Exch_Rate курс обмена ЦБ

Пример php скрипта, осуществляющего загрузку XML с сайта KOVALUT.RU и последующий вывод курсов в виде HTML таблицы:


<?php
/*
PrintXML-Table ver 1.01 от 6 февраля 2012 года
Данный скрипт загружает курсы валют банков в формате XML с сайта
КОВ.РФ и выводит их в виде HTML таблицы. При этом загрузка новых
курсов с сайта КОВ.РФ происходит с использование кэширования.
Курсы загружаются с сайта, только если время модификации файла
kov_3401.xml на Вашем сервере устарело на определенную величину
($Reload_Period). В противном случае курсы извлекаются непосредственно
из файла kovt_3401.xml. Такое кэширование ускорит загрузку Вашей страницы.

Если периодическая загрузка XML файла 'kovt_3401.xml' с сайта KOVALUT.RU будет
осуществляться сторонними средствами, то функции:
  Load_XML_From_Kov_RF()
  Get_Kov_XML()
  GetFileTime()
можно убрать из программы и еще нужно будет заменить строку:
  $Kov_XML_Str = Get_Kov_XML();
на строку:
  $Kov_XML_Str = file_get_contents('kovt_3401.xml');
*/
#Инициализируем глобальные переменные
#если Ваш сайт работает в кодировке UTF-8.
$Site_Encoding 'UTF-8';
#если Ваш сайт работает в кодировке Windows-1251.
#$Site_Encoding = 'Windows-1251';
$Kov_City_Kod '3401'#Код города на сайте KOVALUT.RU
#$Reload_Period - время в секундах, по истечении которого необходимо
#обновлять  файл kovt_3401.xml с курсами валют.
$Reload_Period 300;
#$Work_Dir - Рабочий каталог. в нем сохраняются загруженный kovt_3401.xml
$Work_Dir './';

Kov_Main();

#Kov_Main - отображает курсы валют на Вашем Сайте.
function Kov_Main()
#Загружаем XML с курсами валют в строкувую переменную $Kov_XML_Str
  
$Kov_XML_Str Get_Kov_XML();
  if (
$Kov_XML_Str
  { 
#Создаем XML элемент на основе загруженной выше строки
    
$XML = new SimpleXMLElement($Kov_XML_Str);
    
#Печатаем XML элемент, загруженный с сайта KOVALUT.RU
    
if ($XML
    { 
#Print_Kov_XML($XML);
      
PrintTableInformer($XML);
    }
  }
}

# PrintTableInformerBody - Печатает тело таблицы с курсами обмена валют
#Аргуметы
#$XML = контейнер, в котором содержаться курсы валют банков для печати
function PrintTableInformerBody($XML)
{ global 
$StyleArr$Site_Encoding;
  for (
$BI 0$BI sizeof($XML->Bank); $BI++) # Перебираем все банки города
  #для печати строк с курсами обмена валют
  
$BankName = ($Site_Encoding == 'UTF-8') ? $XML->Bank[$BI]->Name mb_convert_encoding($XML->Bank[$BI]->Name$Site_Encoding"UTF-8");
    
$BGColor = ($BI 2) ? '' " background-color: {$StyleArr['grrow']};"
    print 
"<tr align=\"center\" style = \"color: {$StyleArr['KursCol']};{$BGColor}\">\n";
    if (
$XML->Bank[$BI]->Url == '')
    { print 
"<td align=\"left\" style=\"padding-left: 5px; height: 30px;\">{$BankName}</td>\n";
    }
    else
    { print 
"<td align=\"left\" style=\"padding-left: 5px; height: 30px;\"><a style=\"color: {$StyleArr['BRefCol']};\" href=\"{$XML->Bank[$BI]->Url}\">{$BankName}</a></td>\n";
    }
    print 
"<td>{$XML->Bank[$BI]->USD->Buy}</td><td>{$XML->Bank[$BI]->USD->Sell}</td>\n";
    print 
"<td>{$XML->Bank[$BI]->EUR->Buy}</td><td>{$XML->Bank[$BI]->EUR->Sell}</td>\n";
    
#Печатаем время обновления 
    
print "<td style=\"padding-right: 5px; font-size: 12px;\">{$XML->Bank[$BI]->ChangeTime}</td>\n";
    print 
"</tr>\n";
  } 
}
                   
#PrintTableInformer печатает информер с табличкой в которой есть курсы
#всех банков города
function PrintTableInformer($XML)
{ global 
$StyleArr$Kov_City_Kod$Site_Encoding;
  if (
$Site_Encoding == 'UTF-8')
  { 
#Перекодировка не требуется. Просто загружаем переменные данными из XML
    
$CityName $XML->City->Name;
    
$CityDate $XML->City->Simple_Date;
  }
  else
  { 
#Перекодируем текстовые значения из кодировки UTF-8 в кодировку,
    #установленную на сайте:
    
$CityName mb_convert_encoding($XML->City->Name$Site_Encoding"UTF-8");
    
$CityDate mb_convert_encoding($XML->City->Simple_Date$Site_Encoding"UTF-8");
  }
  print <<<END_OF_RECORD10
<div>
<table style="border-collapse: collapse;">
 <tr>
  <td align="center" colspan="6">
   <h1 style="line-height: normal; font-style: italic; margin: 0px 0px 0px;">
{$CityName}</h1>
   
{$CityDate}
  </td>
 </tr>
 <tr> <td align="center" colspan="6">&nbsp;</td> </tr>
 <tr align="center" style="background-color: #e0e0e0;">
  <th rowspan="2">Банк</th>
  <th colspan="2">Доллар</th>
  <th colspan="2">Евро</th>
  <th rowspan="2">Время <br /> обновления</th>
 </tr>
 <tr align="center" style="background-color: #e0e0e0;">
  <th>покупка&nbsp;</th>
  <th>продажа&nbsp;</th>
  <th>покупка&nbsp;</th>
  <th>продажа&nbsp;</th>
</tr>
END_OF_RECORD10;
  
#Устанавливаем цвета в таблице для актуальных курсов
  
$StyleArr['grrow'] = '#c0c0c0'#Цвет фона нечетного столбца
  
$StyleArr['b-k'] = '#e00000'#Цвет цифр у лучших курсов
  
$StyleArr['BRefCol'] = '#00f'#Цвет ссылки на банк
  
$StyleArr['KursCol'] = '#000'#Цвет букв в строке с курсами банков
  
PrintTableInformerBody($XML->Actual_Rates); #Печатаем актуальные курсы
  
if (sizeof($XML->Not_Actual_Rates->Bank) >= 1)
  { 
#Если есть банки устаревшими курсами
    
print '<tr><th colspan="6">Ниже расположены устаревшие курсы валют:</th></tr>';
    
#Устанавливаем цвета в таблице для устаревших курсов
    
$StyleArr['grrow'] = '#e0e0e0'#Цвет фона нечетного столбца
    
$StyleArr['b-k'] = '#808080'#Цвет цифр у лучших курсов
    
$StyleArr['BRefCol'] = '#808080'#Цвет ссылки на банк
    
$StyleArr['KursCol'] = '#808080'#Цвет букв в строке с курсами банков
    #Печатаем банки с неправильной датой курсов
    
PrintTableInformerBody($XML->Not_Actual_Rates);
  }
  print 
"<tr><td colspan=\"6\" align=\"center\">Источник курсов валют: <a style = \"color: #000000;\" href=\"http://kovalut.ru/index.php?kod={$Kov_City_Kod}\">KOVALUT.RU</a></td></tr>";
  print 
"</table>\n</div>";
}

#Get_FileTime - возвращает время модификации файла если он существует.
#Возвращает 0, если файла не существует. 
function GetFileTime($filename)
{ return ((
file_exists($filename)) ? filemtime($filename) : 0);
}

#Get_Kov_XML - возвращает строку, содержащую XML c курсами валют 
#Курсы загружаются из файла kovt_3401.xml, если время модификации
#файла еще не устарело. Если время модификации файла устарело - 
#XML c курсами извлекается с сайта и сохраняется в файле kovt_3401.xml 
function Get_Kov_XML()
{ global 
$Work_Dir$Kov_City_Kod$Reload_Period;
  
$buf =''#В данную переменную будет загружен XML с курсами валют
  #Создаем переменную с именем файла, в котором будет хранится
  #XML с курсами валют:
  
$XML_File_Name "{$Work_Dir}kovt_{$Kov_City_Kod}.xml"
  
#Проверяем, устарело ли время модификации файла kovt_3401.xml.
  
if (time() > (GetFileTime($XML_File_Name) + $Reload_Period)) 
  { 
#Сразу изменяем время модификации файла, чтобы минимизировать
    #число лишних параллельных загрузок XML с сайта
    
touch($XML_File_Name);
    
#Загружаем XML c сайта KOVALUT.RU:
    
$buf Load_XML_From_Kov_RF();
    
#Проверяем, удалось ли загрузить XML с сайта:
    
if ($buf)
    { 
#Загрузить с сайта получилось. Сохраняем XML с сайта в файл
      
file_put_contents($XML_File_Name$buf);
    }  
  }
  if (!
$buf)
  { 
#XML не был загружен с сайта (или не получилось или 
    #время модификации файла kovt_3401.xml еще не устарело).
    #Загружаем XML с курсами валют из файла.
    
$buf file_get_contents($XML_File_Name);
  }
  return(
$buf);
}

#Load_XML_From_Kov_RF - возвращает строку, содержащую XML c курсами
#валют с сайта KOVALUT.RU В случае, если правильные XML данные загрузить
#не удалось - возвращается пустая строка.
function Load_XML_From_Kov_RF()
{ global 
$Kov_City_Kod;
  
$Kov_Site 'http://informer.kovalut.ru'#Адрес сайта, с которого нужно загружать xml
  #Расположение скрипта, возвращающего XML с курсами:
  
$Kov_XML_Loc '/webmaster/xml-table.php?kod='.$Kov_City_Kod;
  
#$Kov_XML_Loc = '/webmaster/getxml.php?kod='.$Kov_City_Kod;
  
$buf =''#В данную переменную будет считан XML с курсами валют 
  
$OldErrorReportLevel error_reporting(0);
  
#Открываем соединение с сайтом KOVALUT.RU по порту 80 и  таймаутом 10 секунд.
  
$buf file_get_contents($Kov_Site.$Kov_XML_Loc);
  if (!
$buf)
  { 
#Здесь можно обрабатывать ошибку, если не удалось установить
    #соединение с сайтом KOVALUT.RU.
    #echo "$errstr ($errno)<br />\n";
  

  else
  { 
#$XMLTempl - шаблон правильных XML данных.
    
$XMLTempl "\A<\\x3Fxml version=\"1.0\" encoding=\"utf-8\"\\x3F>\n<Exchange_Rates>.+?<\/Exchange_Rates>\Z";
    
#Проверяем, соответствуют ли загруженные данные - шаблону правильных XML данных
    
if (!preg_match("/$XMLTempl/is"$buf$matches))
    { 
#Не удалось загрузить правильные XML данные. Возвращаем пустую строку.
      
$buf '';
    }  
  }
  
#Восстанавливаем изначальный уровень сообщений об ошибках
  
error_reporting($OldErrorReportLevel);
  return(
$buf);
}
?>


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

Волгоград

1 февраля 2021
 
Банк Доллар Евро Время
обновления
покупка  продажа  покупка  продажа 
Автоградбанк 75,6077,00 91,7092,90 30.01.2021 08:00
АЛЬФА-БАНК 74,5977,09 90,6993,29 01.02.2021 01:35
Банк "Агророс" 73,0079,00 89,0095,00 01.02.2021 07:55
Банк «ВБРР» 72,8078,04 88,9694,28 29.01.2021 18:00
Банк ВТБ 73,7077,35 89,9093,55 29.01.2021 17:03
Банк «Национальный стандарт» 74,6676,00 90,7792,32 29.01.2021 17:15
Банк Открытие 75,1576,35 91,2092,55 01.02.2021 07:57
Банк "Пойдём!" 75,1576,75 91,1592,85 01.02.2021 00:00
Банк Русский Стандарт 74,6076,30 90,8092,50 29.01.2021 16:50
БАНК УРАЛСИБ 72,9378,25 89,0794,52 01.02.2021 08:23
Банк ФИНАМ 75,6175,99 91,7192,14 01.02.2021 08:13
БКС Банк 75,5076,04 91,6092,14 01.02.2021 08:10
Газпромбанк 73,9177,84 89,9893,97 01.02.2021 02:41
ЛОКО-Банк 73,2577,25 89,5093,50 29.01.2021 17:17
МТС-Банк 73,8076,80 90,0093,00 29.01.2021 17:05
ОТП Банк 74,0077,00 90,0093,00 29.01.2021 17:33
Райффайзенбанк 73,5378,09 89,1994,72 01.02.2021 07:55
Росбанк 72,0079,00 88,0095,00 30.01.2021 00:03
Росгосстрах Банк 74,0576,55 90,3592,85 29.01.2021 19:30
Россельхозбанк 75,4076,25 91,4592,40 01.02.2021 08:10
Сбербанк России 73,8977,75 90,1693,89 01.02.2021 00:13
СЕВЕРГАЗБАНК 73,8077,80 90,1094,10 30.01.2021 00:03
СКБ-банк 73,9176,89 90,1193,09 30.01.2021 08:23
СМП Банк 74,0076,90 90,2093,10 29.01.2021 18:00
УБРиР 75,3076,50 91,4392,63 01.02.2021 06:10
ФФИН Банк 74,3076,80 90,4092,90 30.01.2021 00:01
ЮниКредит Банк 70,3480,25 86,1696,90 29.01.2021 17:07
Ниже расположены устаревшие курсы валют:
МОРСКОЙ БАНК 75,5875,97 91,7092,22 29.01.2021 15:22
Источник курсов валют: KOVALUT.RU