Парсим курсы валют с сайта ЦБ РФ
Скрипт получает актуальный курсы валют с сайта ЦБ РФ. На текущий момент я написал адаптер exchangerates для iobroker, который получает курсы ЦБ РФ и European Central Bank.
var url = 'http://www.cbr.ru/scripts/XML_daily.asp'; var request = require('request'); schedule("10 17 * * *", function () { parsevalute(); }); function parsevalute(){ url = url; log('Идем на сайт ЦБ - '+url); var options = { url: url, }; // Отправка данных методом POST. request(options, function (error, response, body, callback) { if (!error && response.statusCode == 200) { // log('Код ответа от сервера'+response.statusCode); // log('Ответ от ЦБ: '+body); // Парсим данные var Valute = body.match(/<CharCode>(.*)<\/CharCode>/g); var Nominal = body.match(/<Nominal>(.*)<\/Nominal>/g); var Name = body.match(/<Name>(.*)<\/Name>/g); var Value = body.match(/<Value>(.*)<\/Value>/g); var result = []; for(var i = 0; i < Valute.length-1; i++) { result.push({ Valute: Valute[i].replace(/<CharCode>/g, "").replace(/<\/CharCode>/g, ""), Nominal: Nominal[i].replace(/<Nominal>/g, "").replace(/<\/Nominal>/g, ""), Name: Name[i].replace(/<Name>/g, "").replace(/<\/Name>/g, ""), Value: Value[i].replace(/<Value>/g, "").replace(/[,]+/g, '.').replace(/<\/Value>/g, "") }); //Course = parseFloat(result[i].Value)/parseFloat(result[i].Nominal); createState('Valuta.'+Valute[i].replace(/<CharCode>/g, "").replace(/<\/CharCode>/g, ""), ''); setState ('Valuta.'+Valute[i].replace(/<CharCode>/g, "").replace(/<\/CharCode>/g, ""), (parseFloat(result[i].Value)/parseFloat(result[i].Nominal))); } } }); }
Обновленная версия скрипта:
var url = 'https://www.cbr-xml-daily.ru/daily_json.js'; var request = require('request'); if(getState("javascript.0.Valuta.USD").val === null || !getState("javascript.0.Valuta.USD").val){ log('Нет состояния javascript.0.Valuta.USD'); parsevalute(); } schedule("0 7,16,20 * * 1-5", function () {//"0 * * * *" parsevalute(); }); parsevalute(); function parsevalute(){ url = url; log('Идем на сайт ЦБ - '+url); var options = { url: url }; request(options, function (error, response, body) { log('Получен ответ от ЦБ (' + response.statusCode + ')'); if (!error && response.statusCode == 200) { var obj; try { obj = JSON.parse(body); if (!obj.Valute.USD.Value || !obj.Valute.EUR.Value) { throw new SyntaxError("Данные некорректны"); } else { //log('Ответ от ЦБ: ' + obj.Valute); obj = obj.Valute; for (var key in obj) { if(obj.hasOwnProperty(key)){ var course = parseFloat(obj[key].Value)/parseFloat(obj[key].Nominal); createState('Valuta.' + key, 0, {name: obj[key].Name}); setState ('Valuta.' + key, course); } } log('Курсы валют обновлены'); } } catch (err) { log("Ошибка парсинга! - " + JSON.stringify(err)); result = null; } } }); }
=IMPORTXML(«http://www.cbr.ru/scripts/XML_daily.asp»; «//ValCurs/Valute[CharCode=»»USD»»]/Value»)
в ячейке таблицы Гугли
Не понял
ПАРСИМ КУРСЫ ВАЛЮТ С САЙТА ЦБ РФ
Гугль почти все сделает за нас!
Надо только:
1. создать таблицу на диске Гугли
2. выделить ячейку
3. скопировать формулу в ячейку =IMPORTXML(«http://www.cbr.ru/scripts/XML_daily.asp»; «//ValCurs/Valute[CharCode=»»USD»»]/Value»)
— после чего таблица запросит с сайта ЦБ РФ информацию о курсах валют, обработает и выведет в ячейку значение (в нашем случае, USD) .
Примечание. Кавычки в формуле должны быть верхними.
Это все замечательно конечно, но этот скрипт парсит курсы в системе ‘умный дом’.