Парсинг курса валют /

Парсинг курса валют на примере НБУ. Простая функция на php. можно использовать для чего угодно и как угодно

13 / 05 / 2019 708 parser Aвтор: Фрилансер

Парсинг курса валют

Курс валют очень часто используют в интернет магазинах. И для мониторинга  изменения курса можно использовать сайты банков. Крупные банки предоставляют открытое API для получения текущего курса валют.

Возьмем для примера НБУ — у них есть Api тут

Как видно у них можно получить данные в двух форматах XML и JSON

Для удобства будем использовать JSON

Для запроса к серверу можно использовать file_get_content() или сUrl.
Недавно по работе с курлом была статья с примерами Curl в примерах на PHP.
Будем юзать СURL

Простой пример как вернуть содержимое 

$ch = curl_init('https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
print_r($html); 

Response

[
{
r030: 36,
txt: "Австралійський долар",
rate: 18.191247,
cc: "AUD",
exchangedate: "14.05.2019",
},
{
r030: 124,
txt: "Канадський долар",
rate: 19.424695,
cc: "CAD",
exchangedate: "14.05.2019",
},
.
.
.

{
r030: 941,
txt: "Сербський динар",
rate: 0.250404,
cc: "RSD",
exchangedate: "14.05.2019",
},
{
r030: 964,
txt: "Паладiй",
rate: 34260.539,
cc: "XPD",
exchangedate: "14.05.2019",
},
]

Для того чтобы получить курс определенной валюты  можно написать маленькую функцию.

$ch = curl_init('https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);

// print_r(json_decode($html,true)); 

function getCurs($array,$val){
    foreach($array as $key => $value){
        if($value['cc'] == $val){
            return $value;
        }
        
    }
}
//Пример использования
print_r(getCurs(json_decode($html,true),'MAD'));
//Array ( [r030] => 504 [txt] => Марокканський дирхам [rate] => 2.7394 [cc] => MAD [exchangedate] => 14.05.2019 )

Примечание. Внимательно читайте условия использования Api. Частые запросы к серверам банка не желательны, иначе вашу ip могут заблокировать.
Правильно один раз сохранить себе данные в базу или файл и брать инфу потом оттуда. И обновлять эти данные 2-3 раза в день. 

3 случайных Поста

Card image cap
Разбиваем строку название товара woocommerce
Card image cap
Парсим данные из olx
Card image cap
Кнопки вверх на сайт

коммент.

© SiteBlog designer