ПММ

Парсер курса валют с сайта ЦБ

Парсер курса валют с сайта ЦБ
28.01.2019 0 35
Попробуем написать парсер курса валют с сайта ЦБ РФ несколькими способами, а точнее тремя и сравним скорости их выполнения

Обращаться будем к следующему файлику: http://www.cbr.ru/scripts/XML_daily.asp

Во всех случаях будем парсить, сохранять все валюты, а затем извлекать нужную валюту

1 СПОСОБ: file_get_contents + регулярки

$page = file_get_contents ('http://www.cbr.ru/scripts/XML_daily.asp'); // Грузим файл с обновлениями

if ($page AND $page != '') {

preg_match_all('|<Valute ID="(.*?)"><NumCode>(.*?)</NumCode><CharCode>(.*?)</CharCode><Nominal>(.*?)</Nominal><Name>(.*?)</Name><Value>(.*?)</Value></Valute>|i', $page, $parse);

}



2 СПОСОБ: CURL + регулярки

$ch = curl_init('http://www.cbr.ru/scripts/XML_daily.asp'); // Грузим файл с обновлениями
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);

if ($page AND $page != '') {

preg_match_all('|<Valute ID="(.*?)"><NumCode>(.*?)</NumCode><CharCode>(.*?)</CharCode><Nominal>(.*?)</Nominal><Name>(.*?)</Name><Value>(.*?)</Value></Valute>|i', $page, $parse);

}


3 СПОСОБ: simplexml_load_file

$page = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp"); // Грузим файл с обновлениями

$i=0;

foreach ($page AS $p) {

$parse[$i++] = strval($p->Value);
 
}

Определим функцию для вывода курса:

function getValue($id) {

global $parse;

return $parse[6][$id];

}

Вызов:
getValue (10)

Где 10 - порядковый номер валюты в массиве

Список валют с порядковыми номерами


0 - Австралийский доллар
1 - Азербайджанский манат
2 - Фунт стерлингов Соединенного королевства
3 - Армянских драмов
4 - Белорусский рубль
5 - Болгарский лев
6 - Бразильский реал
7 - Венгерских форинтов
8 - Гонконгских долларов
9 - Датская крона
10 - Доллар США
11 - Евро
12 - Индийских рупий
13 - Казахстанских тенге
14 - Канадский доллар
15 - Киргизских сомов
16 - Китайских юаней
17 - Молдавских леев
18 - Норвежских крон
19 - Польский злотый
20 - Румынский лей
21 - СДР (специальные права заимствования)
22 - Сингапурский доллар
23 - Таджикских сомони
24 - Турецкая лира
25 - Новый туркменский манат
26 - Узбекских сумов
27 - Украинских гривен
28 - Чешских крон
29 - Шведских крон
30 - Швейцарский франк
31 - Южноафриканских рэндов
32 - Вон Республики Корея
33 - Японских иен

Замеры по скорости (без кеширования):


file_get_contentsCURLsimplexml_load_file
0.0246241092681880.0187561511993410.037925958633423
0.0225288867950440.0332260131835940.021504878997803
0.0211529731750490.0179119110107420.024708032608032
0.0198500156402590.0328381061553960.021610975265503
0.0203680992126460.0195319652557370.021000862121582
0.021704816810.02445282936
0.02535014152

В последней строке подсчитана средняя скорость выполнения. Исходя из нее делаем вывод, что 1 способ эффективнее

Если хотите добавить кэширование, то обратитесь к статье: Кэширование на PHP

Ниже представлены полные коды с кешированием для всех 3 способов

1 СПОСОБ
2 СПОСОБ
3 СПОСОБ
Теги:
При копировании сохраняйте ссылку на первоисточник:
Поделиться в соц. сетях:

Информация
Вашей группе не разрешено писать комментарии
Чтобы писать комментарии вам необходимо авторизоваться:

Настройки
Выбрать цвет