Существует довольно большое количество API, предлагающих курс обмена валюты в реальном времени и в прошлом. currencylayer API — один из лучших. Это простой в использовании JSON API, поддерживающий 168 валют и обеспечивающий точные, надежные и стабильные обменные курсы валют.

Цель этой статьи — поделиться основами использования API-интерфейса currencylayer в Python с библиотекой Requests для получения текущих и исторических котировок.

(Для сравнения API курсов обмена валют см. Сравнение бесплатных и платных API конвертеров валют.)

Получить API валютного слоя

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

Процедура регистрации очень проста. На главной странице currencylayer мы переходим к Начать использование API и выбираем Бесплатный план. Бесплатный план поддерживает текущие и исторические котировки 1000 запросов API в месяц.

После создания учетной записи мы входим в нашу Панель управления учетной записью и там находим наш ключ доступа к API.

Библиотека запросов на импорт

Чтобы получить доступ к API в python, нам нужно импортировать библиотеку Requests.

Для тех, кто не знаком с запросами, это простая и элегантная HTTP-библиотека Python для захвата, публикации, потоковой передачи и подключения к защищенным веб-страницам. Если он у вас не установлен, вы можете легко установить его с помощью команды pip install requests.

Мы также храним наш ключ API currenclaer в виде переменной для более легкого доступа.

api = '2639ccac02d7c15359d45f9a2bc9d8ea'

Получить живую цитату

Теперь все готово. Давайте попробуем получить живую котировку с помощью нашего ключа API.

Это «живой» URL-адрес запроса, как указано на веб-сайте currencylayer.

http://apilayer.net/api/live 
    ? access_key = YOUR_ACCESS_KEY 
    & currencies = USD,AUD,CAD,PLN,MXN 
    & format = 1

Мы будем использовать метод requests.get для получения ответа JSON.

Во-первых, мы сохраняем все значения необходимых параметров в dict. Мы должны ввести все наши целевые валюты в виде строки, разделенной «,».

params = {'access_key': api, 'currencies': 'USD,EUR,CNY,HKD', 'format': 1}

Мы создаем объект ответа r, используя requests.get.

r = requests.get('http://apilayer.net/api/live', params = params)

Мы кодируем наш ответ в json, используя метод r.json. И здесь мы получаем нашу живую цитату, хранящуюся в словаре.

# livequote 
{u'privacy': u'https://currencylayer.com/privacy',
 u'quotes': {u'USDCNY': 6.653204,
             u'USDEUR': 0.852304,
             u'USDHKD': 7.804504,
             u'USDUSD': 1},
 u'source': u'USD',
 u'success': True,
 u'terms': u'https://currencylayer.com/terms',
 u'timestamp': 1507467546}

Мы можем легко получить доступ к нашим сохраненным данным, используя методы Python dict.

livequote['quotes']['USDCNY']

Получить историческую цитату

Также легко получить историческую котировку с помощью нашего ключа API.

URL-адрес запроса изменяется, как показано ниже. Нам просто нужно изменить URL-адрес и передать дополнительный параметр даты в наш запрос.

http://apilayer.net/api/historical 
    ? access_key = YOUR_ACCESS_KEY 
    & date = YYYY-MM-DD 
    & currencies = USD,AUD,CAD,PLN,MXN 
    & format = 1

Мы используем тот же метод запросов, чтобы получить данные обменного курса в формате JSON на историческую дату.

params = {'access_key': api, 'date': '2017-10-01', 'currencies': 'USD,EUR,CNY,HKD', 'format': 1} 
r = requests.get('http://apilayer.net/api/historical', params = params) 
histquote = r.json()

Здесь мы получаем нашу историческую цитату, хранящуюся в словаре:

# histquote
{u'date': u'2017-10-01',
 u'historical': True,
 u'privacy': u'https://currencylayer.com/privacy',
 u'quotes': {u'USDCNY': 6.653198,
             u'USDEUR': 0.846697,
             u'USDHKD': 7.810304,
             u'USDUSD': 1},
             u'source': u'USD',
 u'success': True,
 u'terms': u'https://currencylayer.com/terms',
 u'timestamp': 1506902399}

Первоначально опубликовано на cecilialee.github.io 8 октября 2017 г.