Как сделать парсинг курса валют в c

от admin

Справочник по C#

Если вы столкнулись с проблемой и хотите поделиться своим опытом, знаниями или у вас есть интересная статья с иностранного сайта, предложение новой темы, статью которую Вы хотите видеть в ближайшем будущем, расскажите нам об этом и мы обязательно поделимся этими знаниями со всеми. Возможно, для других ваши знания, опыт и советы окажутся очень ценными и помогут вовремя найти правильный выход или не совершить ошибок.
Так же если у вас есть предложение о сотрудничестве, пожелания, указать на нарушения сайта или просто сказать слова благодарности, все это вы можете сделать через форму обратной связи. Читать дальше

C# — Курсы валют НБУ в Json формате

В этой статье мы создадим программу, которая загружает курсы валют с сайта НБУ, после чего эти курсы выводит на экран в удобном для восприятия виде.

Если вы думаете, при чем тут курсы валют, я ж не банкир? Зачем мне это не нужно? Вы ошибаетесь — если вам не нужны курсы валют, то технологии, рассмотренные здесь вам обязательно пригодятся в будущем.

  • Создайте проект
  • Добавление элементов управления на форму
  • Подготовка проекта для работы с данными в формате Json
  • Обработчик события нажатия кнопки Загрузить
  • Создание библиотеки классов
  • Создание консольного приложения

Создайте проект

  1. Нажмите кнопку Create a new project.
  2. Шаг Create new project:
  • Язык программирования: C#
  • Платформа: Windows
  • Тип проекта: Desktop

Открылось главное окно Visual Studio и пустая форма, которую вы сейчас заполните.

Для упрощения поиска нужного элемента в Панели элеметов воспользуйтесь поиском в верху панели.

Добавление элементов управления на форму

Добавьте следующие элементы управления и установите их свойства:

  • Name: buttonDownload
  • Text: «Загрузить»
  • Anchor: Top, Right
  • Name: textBoxFilter
  • Anchor: Top, Left, Right
  • Name: lblFilter
  • Text: Фильтр
  • Anchor: Top, Left
  • Name: dtpCurrencyDate
  • Anchor: Top, Left
  • Name: listViewCurrates
  • Anchor: Top, Bottom, Left, Right
  • View: Details
  • Columns:

  • Name: N Code
  • Name: Text
  • Name: Rate
  • Name: C Code

Подготовка проекта для работы с данными в формате Json

Для того, чтоб представлять себе, в каком виде курсы валют возвращаются сервером, следует перейти по ссылке:

Для того, чтоб работать с данными в формате Json, следует воспользоваться менеджером пакетов NuGet для установки библиотеки Newtonsoft.Json.

  1. Откройте Обозреватель решений
  2. Правой кнопкой выберите проект, для которого следует добавить пакет Newtonsoft.Json
  3. В открывшемся меню выберите Управление пакетами NuGet
  4. Выберите Newtonsoft.Json и нажмите кнопку Установить

В добавок, каждая валюта, должна быть представлена в виде типа, будем его называть CurrencyRate. Для его описания создайте класс:

  1. Откройте Обозреватель решений
  2. Правой кнопкой мыши выберите проект, внутри которго следует создать класс в данном случае это CurratesFormApp
  3. В открывшемся меню выберите Добавить — Класс
  4. Укажите имя класса CurrencyRate и нажмите кнопку Добавить
  5. Приведите класс к следующему виду:

Обработчик события нажатия кнопки Загрузить

Добавьте обработчик события нажатия кнопки buttonDownload:

Ну вот. Программа промежуточно уже имеет рабочее состояние:

Теперь нужно привести программу в надлежащий вид.

Обработчик buttonDownload_Click можно разбить на три логические части

  1. Загрузка курсов валют из Интернет
  2. Парсинг Json ответа от сервера.
  3. Вывод полученных элементов на экран

Данный метод делает три задачи, что противоречит основополагающему принципу ООП: SRP (Single Responcibility Principle — Принцип единственной ответственности). Поэтому данный метод, следует переписать:

  • Код, относящийся к этапу загрузки курсов валют нужно вынести в метод GetWebContent
  • Код, отвечающий за вывод курсов валют на экран, вынести в метод FillCurrencyList.

В итоге, мы получаем три метода buttonDownload_Click(), который в процессе выполнения вызывает методы GetWebContent() и FillCurrencyList():

Отдельно хочется остановиться на конструкции следующего вида:

В данном контексте, using это оператор, который позволяет не заморачиваться об освобождении ресурсов, и закрытии файловых дескрипторов. Освобождение ресурсов средой выполянется средой CLR автоматически, путем вызова метода Dispose(), после того, как работа программы вышла за пределы области видимости данного оператора (область видимости задается фигурными скобками).

Для возможности использования оператора using, объект данного типа должен реализовывать интерфейс IDisposable. Вопрос использования интерфейсов будет рассмотрен в других материалах.

Создание библиотеки классов

Предположим, что созданные вами методы будут нужны не только в этой программе, но и в других решениях, где нужно будет выполнять схожие операции. Для того, чтоб избежать дублирования одного и того-же кода в разных проектах, целесообразно вынести код в отдельную библиотеку, которую, в свою очередь, подключить к решению. Данный подход позволит вам придерживаться основополагающего принципа ООП: DRY — Don’t Repeat Yourself — Не повторяйся.

Например, данная программа создавалась как Windows Forms Application, но в рамках этого же решения мы создадим консольное приложение, которе выводит список курсов валют в консоль.

Для добавления библиотеки:

  1. Откройте Обозреватель решений
  2. Правой кнопкой мыши выберите решение, в данном случае это Currency
  3. Шаг Create new project:

  • Язык программирования: C#
  • Платформа: Windows
  • Тип проекта: Desktop

Для перемещения метода GetWebContent проделайте следующие действия:

  1. Переименуйте класс Class1 в Web — этот класс будет хранить созданные вами методы, относящиеся к работе с Интернет.
  2. Скопируйте метод GetWebContent из класса Form1 в только созданный вами класс Web

Для переименования классов используйте мастер переименования, который переименует не только сам класс, но и файл в которм он находится, и все ссылки на него в вашей программе.

Для перемещения класса CurrencyRate проделайте следующие действия:

  1. Откройте Обозреватель решений
  2. Разверните проект CurrencyFormApp
  3. Выберите правой кнопкой мыши файл CurrencyRate.cs — Копировать
  4. Выберите правой кнопкой мыши проект MyLib — Вставить
  5. В только что скопированном файле CurrencyRate.cs переименуйте пространство имен CurrencyFormApp в MyLib

Создание консольного приложения

Теперь давайте создадим консольное приложение

  1. Откройте Обозреватель решений
  2. Правой кнопкой мыши выберите решение, в данном случае это Currency
  3. Нажмите кнопку Create a new project.
  4. Шаг Create new project:

  • Язык программирования: C#
  • Платформа: Windows
  • Тип проекта: Консоль
  • Открыть: Ссылки — Добавить ссылку — Проекты
  • Установить чекбокс MyLib, нажать OK

Файл program.cs сделайте следующего вида:

Если у вас решение содержит несколько исполняемых проектов, изменить запускаемый проект можно в выпадающем списке как на рисунке ниже

Как сделать парсинг курса валют в c

Далее работа с регулярными выражениями, я изучил код страницы и решил добавлять все найденные значения, фильтруя по знаку градуса ° :

Но, этот код просто зависает на 5 сек и нечего не находит. Я, прежде чем делать поиск в коде всей HTML странице, протестировал код регулярного выражения на строке:

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

C# — Курсы валют НБУ в Json формате

В этой статье мы создадим программу, которая загружает курсы валют с сайта НБУ, после чего эти курсы выводит на экран в удобном для восприятия виде.

Если вы думаете, при чем тут курсы валют, я ж не банкир? Зачем мне это не нужно? Вы ошибаетесь — если вам не нужны курсы валют, то технологии, рассмотренные здесь вам обязательно пригодятся в будущем.

  • Создайте проект
  • Добавление элементов управления на форму
  • Подготовка проекта для работы с данными в формате Json
  • Обработчик события нажатия кнопки Загрузить
  • Создание библиотеки классов
  • Создание консольного приложения

Создайте проект

  1. Нажмите кнопку Create a new project.
  2. Шаг Create new project:
  • Язык программирования: C#
  • Платформа: Windows
  • Тип проекта: Desktop

Открылось главное окно Visual Studio и пустая форма, которую вы сейчас заполните.

Для упрощения поиска нужного элемента в Панели элеметов воспользуйтесь поиском в верху панели.

Добавление элементов управления на форму

Добавьте следующие элементы управления и установите их свойства:

  • Name: buttonDownload
  • Text: «Загрузить»
  • Anchor: Top, Right
  • Name: textBoxFilter
  • Anchor: Top, Left, Right
  • Name: lblFilter
  • Text: Фильтр
  • Anchor: Top, Left
  • Name: dtpCurrencyDate
  • Anchor: Top, Left
  • Name: N Code
  • Name: Text
  • Name: Rate
  • Name: C Code

Подготовка проекта для работы с данными в формате Json

Для того, чтоб представлять себе, в каком виде курсы валют возвращаются сервером, следует перейти по ссылке:

Для того, чтоб работать с данными в формате Json, следует воспользоваться менеджером пакетов NuGet для установки библиотеки Newtonsoft.Json.

  1. Откройте Обозреватель решений
  2. Правой кнопкой выберите проект, для которого следует добавить пакет Newtonsoft.Json
  3. В открывшемся меню выберите Управление пакетами NuGet
  4. Выберите Newtonsoft.Json и нажмите кнопку Установить

В добавок, каждая валюта, должна быть представлена в виде типа, будем его называть CurrencyRate. Для его описания создайте класс:

  1. Откройте Обозреватель решений
  2. Правой кнопкой мыши выберите проект, внутри которго следует создать класс в данном случае это CurratesFormApp
  3. В открывшемся меню выберите Добавить — Класс
  4. Укажите имя класса CurrencyRate и нажмите кнопку Добавить
  5. Приведите класс к следующему виду:

Обработчик события нажатия кнопки Загрузить

Добавьте обработчик события нажатия кнопки buttonDownload:

Ну вот. Программа промежуточно уже имеет рабочее состояние:

Теперь нужно привести программу в надлежащий вид.

Обработчик buttonDownload_Click можно разбить на три логические части

  1. Загрузка курсов валют из Интернет
  2. Парсинг Json ответа от сервера.
  3. Вывод полученных элементов на экран

Данный метод делает три задачи, что противоречит основополагающему принципу ООП: SRP (Single Responcibility Principle — Принцип единственной ответственности). Поэтому данный метод, следует переписать:

  • Код, относящийся к этапу загрузки курсов валют нужно вынести в метод GetWebContent
  • Код, отвечающий за вывод курсов валют на экран, вынести в метод FillCurrencyList.

В итоге, мы получаем три метода buttonDownload_Click(), который в процессе выполнения вызывает методы GetWebContent() и FillCurrencyList():

Отдельно хочется остановиться на конструкции следующего вида:

В данном контексте, using это оператор, который позволяет не заморачиваться об освобождении ресурсов, и закрытии файловых дескрипторов. Освобождение ресурсов средой выполянется средой CLR автоматически, путем вызова метода Dispose(), после того, как работа программы вышла за пределы области видимости данного оператора (область видимости задается фигурными скобками).

Для возможности использования оператора using, объект данного типа должен реализовывать интерфейс IDisposable. Вопрос использования интерфейсов будет рассмотрен в других материалах.

Создание библиотеки классов

Предположим, что созданные вами методы будут нужны не только в этой программе, но и в других решениях, где нужно будет выполнять схожие операции. Для того, чтоб избежать дублирования одного и того-же кода в разных проектах, целесообразно вынести код в отдельную библиотеку, которую, в свою очередь, подключить к решению. Данный подход позволит вам придерживаться основополагающего принципа ООП: DRY — Don’t Repeat Yourself — Не повторяйся.

Например, данная программа создавалась как Windows Forms Application, но в рамках этого же решения мы создадим консольное приложение, которе выводит список курсов валют в консоль.

Для добавления библиотеки:

  1. Откройте Обозреватель решений
  2. Правой кнопкой мыши выберите решение, в данном случае это Currency
  3. Шаг Create new project:

  • Язык программирования: C#
  • Платформа: Windows
  • Тип проекта: Desktop
  1. Переименуйте класс Class1 в Web — этот класс будет хранить созданные вами методы, относящиеся к работе с Интернет.
  2. Скопируйте метод GetWebContent из класса Form1 в только созданный вами класс Web

Для переименования классов используйте мастер переименования, который переименует не только сам класс, но и файл в которм он находится, и все ссылки на него в вашей программе.

Для перемещения класса CurrencyRate проделайте следующие действия:

  1. Откройте Обозреватель решений
  2. Разверните проект CurrencyFormApp
  3. Выберите правой кнопкой мыши файл CurrencyRate.cs — Копировать
  4. Выберите правой кнопкой мыши проект MyLib — Вставить
  5. В только что скопированном файле CurrencyRate.cs переименуйте пространство имен CurrencyFormApp в MyLib

Создание консольного приложения

Теперь давайте создадим консольное приложение

  1. Откройте Обозреватель решений
  2. Правой кнопкой мыши выберите решение, в данном случае это Currency
  3. Нажмите кнопку Create a new project.
  4. Шаг Create new project:

  • Язык программирования: C#
  • Платформа: Windows
  • Тип проекта: Консоль
  • Открыть: Ссылки — Добавить ссылку — Проекты
  • Установить чекбокс MyLib, нажать OK

Файл program.cs сделайте следующего вида:

Если у вас решение содержит несколько исполняемых проектов, изменить запускаемый проект можно в выпадающем списке как на рисунке ниже

Парсер курса валют с сайта ЦБ РФ

Подскажите, пожалуйста, с помощью чего можно сделать парсер курса валют с сайта центрального банка России.

Необходимо и доллар и евро в разные строчки вывести.

Через WebClient и регулярные выражение не получается, так как строчки по сути(кроме цифр самих) идентичны
<ins /> <ins /> А поиск производится только по строчке

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

Отображение курса валют на форме
непонятно почему не работает: string data = string.Empty; // Адрес сайта с курсом.

Код для считывания данных курса валют
Вобщем пишу незатейливую ( может наоборот) программку, которая считывает данные с сайта(ов) курсы.

Калькулятор валют — не получается реализовать добавление и удаление курса
Здравствуйте. Помогите пожалуйста, задали курсовую &quot;Калькулятор валют&quot;. В программе должна быть.

Лучший ответСообщение было отмечено tezaurismosis как решение

Решение

Подскажите, пожалуйста, что я делю не так? не выводит курс

BananaBrick, Зачем вы regex сюда запихнули. В c# есть встроенные средства для работы с XML и JSON. Обе ссылки я вам дал. Выбирайте что больше нравится.

Добавлено через 17 минут
BananaBrick,

BananaBrick, проще пареной репы)

Debug.7z (105.8 Кб, 120 просмотров)

Сообщение от BananaBrick

А если после получения курса доллара и евро нужно посчитать сумму в рублевом эквиваленте. Например: есть label в котором считается сумма в рублях, и эту сумму нужно умножить на полученный курс доллара и евро, чтобы потом в label вывести. Уже многое пробовал, сумма получается нулевая. Ничего не помогает. Подскажите как сделать?

Добавлено через 5 минут
А если после получения курсов доллара и евро нужно на них разделить сумму в рублях , которая до этого считается из сумм textbox’ов, ну чтобы получилась сумма в долларах и евро, т.е. сумму в рублях перевести в валюту. При рассчете у меня 0 показывает в выходной label, прошу помогите решить проблему! Заранее благодарю!

Как получить курс валюты средствами C#

Как получить курс валюты средствами C#

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

Особого времени на решения этой задачи не было, и я надеялся, что в сети найдется готовый снипет, способный решить проблему за пару минут. Увы, ни к чему хорошему мои поиски не привели. Варианты, попавшие под зоркий глаз Google, демонстрировали банальный анализ страницы центрального банка с перечнем всех доступных курсов валют при помощи регулярного выражения. Не знаю, зачем авторы этих решений мучились с регулярными выражениями, если сайт центрального банка всегда рад отдать интересующую информацию в виде XML/SOAP.

Вариант с SOAP мне показался более затратным (по времени), поэтому было решено получать все необходимые данные в XML. Для этого требуется сделать GET запрос по адресу http://www.cbr.ru/scripts/XML_daily.asp. Ответом будет готовый для анализа XML, содержащий информацию о курсах различных валют (на текущую дату). Кусок такого XML привожу ниже:

Получение курсов валют средствами C#

Решить задачу получения курса средствами C# достаточно просто. Возможно, это не совсем оптимальное решение (я пока не считаю себя экспертом в .NET), но оно работает шустро и прекрасно выполняет поставленную задачу. Разбирать XML я решил при помощи класса XmlTextReader. Вот что у меня получилось:

В принципе, можно было обойтись средствами одного XmlTextReader, но тогда код получился бы более сложным для восприятия. Пришлось бы работать с элементами последовательно и сохранять промежуточные значения для дальнейшего анализа. Смешанный подход позволил избавиться от излишеств.

Кстати, эту же задачу реально решить при помощи одного класса XmlDocument. XML файл с информацией о курсах валют небольшого размера, поэтому использование XmlDocument вполне оправданно. Для больших файлов XmlDocument не подходит, т.к. все данные из файла сразу же загружаются в память и ее элементарно может не хватить.

Name already in use

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Курсы валют ЦБ России

Библиотека для получения и парсинга XML-данных о курсах валют

Котировки на заданный день
http://www.cbr.ru/scripts/XML_daily.asp
Возможно получение как полного списка, так и фильтрация по выбранным кодам валют (USD, EUR и т.д.).

Вывод данных: XML или PHP-массив.

Добавьте в блок «require» в composer.json вашего проекта:

или в командной строке:

Скачайте и распакуйте архив с файлами в нужное вам место, затем подключите автолоадер библиотеки:

Читать:
Почему после форматирования флешки она не работает

Related Posts