Простое решение для получения текущего актуального значения курса валют с сайта Сбербанка.
Насколько известно, Сбербанк не предоставляет API для получения курсов валют. Получение значений можно сделать путем парсинга страницы, но, как вы понимаете, через неделю они поменяют верстку и парсер отвалится. Нашелся более простой способ получения значений. Пока что работает нормально.
На сайте банка блоки на страницах подгружаются по мере надобности. Это как раз то, что нужно для нас. У них есть блок для отображения валют и данные для него грузятся обычным методом GET:
Вот путь, по которому лежат данные:
https://www.sberbank.ru/portalserver/proxy/?pipe=shortCachePipe&url=http%3A%2F%2Flocalhost%2Frates-web%2FrateService%2Frate%2Fcurrent%3FregionId%3D77%26rateCategory%3Dbase %26currencyCode%3D840
Как видим, передается путь к их локальному методу, который принимает код валюты. В примере это 840, т.е. доллар США.
Результат запроса вот:
Ответ сервера понятен без лишних объяснений. Возможный код на PHP:
1 2 3 4 5 6 7 8 9 |
$url = 'https://www.sberbank.ru/portalserver/proxy/?pipe=shortCachePipe&url=http%3A%2F%2Flocalhost%2Frates-web%2FrateService%2Frate%2Fcurrent%3FregionId%3D77%26rateCategory%3Dbase%26currencyCode%3D840'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $result = curl_exec($ch); |
Надеюсь данная заметка будет полезна для кого-то.
Не робит данный линк на запрос инфы
Линк исправный. Есть нюанс один только, при копировании линка из статьи добавляется лишний пробел. Нужно убрать все пробелы из ссылки и все станет работать.