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

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

Получаем актуальные курсы валют там, где захочется. Бесплатно, без смс, но с регистрацией.

Нам понадобится:

  • Python 3.7 и выше
    Скачать для Windows тут: https://www.python.org/downloads/
    В линукс и mac os Python встроен из коробки.
  • Библиотека requests.
    Обычно идет в комплекте с дистрибутивом Python. Если ее нет, то устанавливаем командой
pip install requests

Все способы будут показаны на получения курса конвертации Доллара США в Рубль. С другими валютами все действия делаются аналогично.

Самый простой API для использования. Чтобы получить ключ, достаточно просто ввести e-mail и на него придет ваш APIkey. Можно использовать временную почту, все равно она понадобится только один раз.

Ссылка для получения free API:

Пример запроса в python:

import requests data = requests.get('https://free.currconv.com/api/v7/convert?apiKey=YOUR_API_KEY&q=USD_RUB&compact=ultra').json() print (data['USD_RUB'])
Результат выполнения запроса на момент написания статьи.
Результат выполнения запроса на момент написания статьи.

Ограничения:

  • Не более 100 запросов в час.
  • Только две котировки за один запрос.
  • История доступна на 8 дней.
  • Нет возможности сменить базовую валюту.

Для этого сервиса уже требуется полноценная регистрация. Ключ API будет доступен после подтверждения e-mail адреса и входа в профиль.

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

Бесплатный тариф позволяет сгенерировать два API ключа.

Функционал намного шире, чем у currencyconverterapi. Например, поддерживается смена базовой валюты и запрос сразу нескольких котировок из одного запроса.

Более подробная документация по формированию запросов: https://docs.openexchangerates.org/docs/latest-json

Пример запроса в python:

import requests data = requests.get('https://openexchangerates.org/api/latest.json?app_id=YOUR_API_KEY&base=USD&symbols=RUB').json() print (data['rates']['RUB'])
Результат выполнения запроса на момент написания статьи.
Результат выполнения запроса на момент написания статьи.

Ограничения:

  • Обновление 1 раз в час.
  • История только за один день.
  • 1000 запросов в месяц.

Официальные курсы валют ЦБ РФ в виде XML или JSON. Обновляется редко и сильно отличается от биржевого.

Для работы не требуется регистрация и получение ключа API. Достаточно просто выполнить запрос к ресурсу.

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

Пример запроса в python:

import requests data = requests.get('https://www.cbr-xml-daily.ru/daily_json.js').json() print (data['Valute']['USD']['Value'])
Результат выполнения запроса на момент написания статьи.
Результат выполнения запроса на момент написания статьи.

Ограничения:

  • Не более 5 запросов в секунду.
  • Не более 120 запросов в минуту.
  • Не более 10000 запросов в сутки.

А что там по крипте...

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

Можно просматривать в браузере, но лучше в терминале при помощи утилиты curl. В линуксы она уже встроена, а версия для Windows доступна тут.

curl rate.sx
Парсинг курсов валют

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

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

curl rate.sx/BTC #курс доллара к биткоину curl rub.rate.sx/BTC #курс рубля к биткоину curl rub.rate.sx/USDT #курс рубля к USDT. Можно использовать как курс USD-RUB

И, естественно, можно просто получить текущее значение курса конвертации. Делается это следующим запросом:

curl rate.sx/1BTC #курс доллара к 1 биткоину curl rub.rate.sx/1 BTC #курс рубля к 1 биткоину

В ответ придет число, соответствующее текущему курсу.

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

Можно даже совсем по дичи:

Взять esp8266/rasberry pi/onion omega 2 или любой другой микроконтроллер, с которого можно отправлять http запросы и сделать сирену ГО, которая будет срабатывать при повышении курса. Ну или на что там у вас фантазии хватит.

Лично я сделал бота для моего matrix-сервера на bash - скрипте:

#!/bin/bash usd_cur=$(python3 usdcb.py) usd_btc=$(curl https://usd.rate.sx/1BTC) rub_btc=$(curl https://rub.rate.sx/1BTC) last_cur=$(tail -1 cur.log) if (( $(echo "$usd_cur > $last_cur" | bc))) then echo -e "Новое дно! Доллар США $usd_cur \n₿ - USD $usd_btc \n₿ - RUB $rub_btc" | python3 matrix-commander.py last_cur="$usd_cur"; echo "$last_cur" >> cur.log; else echo -e "Доллар США $usd_cur \n₿ - USD $usd_btc \n₿ - RUB $rub_btc" | python3 matrix-commander.py last_cur="$usd_cur"; echo "$last_cur" >> cur.log; fi

Все примеры, упомянутые в этом гайде можно скопировать здесь:

3030
21 комментарий

Нахуя
А главное зачем
Есть виджеты на смарты, наверняка есть каналы в тг
Есть прекрасный https://zenrus.ru/

1

Окей, допустим, ты хочешь сделать... хммм... анальную пробку, которая будет вибрировать, когда купленный BTC упадет ниже определенной отметки. Тащить значения, парсингом html, или, упаси боже, телеграм канала - слишком геморно и бессмысленно. Поэтому тут и нужны api, либо терминальные информеры.

23

Комментарий недоступен

7

Нужен усреднённый курс валют по ценам из пятёрочки

7

У них нет публичного API.
Но круто было бы сделать информер по акциям

курс покупки в тинькофф. Родной api, без регистрации и ограничний

url = 'https://api.tinkoff.ru/v1/currency_rates?from=USD&to=RUB'
print(requests.get(url).json()['payload']['rates'][2]['buy'])

3

Ебанутым нет покоя.

3