Программа на python которая выводит курс валюты на основании данных сайта

Я совсем новичок, хотела бы разобрать как же получить данные с сайта cbr.ru по курсам доллара и евро за 05.10.2018 — 10.10.2018. Смотрела здесь, но для себя нужного не нашла( Хотелось бы путем через pandas python Подскажите, пожалуйста, в каком направлении двигаться

Отслеживать
задан 20 янв 2022 в 16:05
13 3 3 бронзовых знака

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

20 янв 2022 в 16:07

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Функция чтения XML работает начиная с версии Pandas 1.3.0 . По примеру из вашей ссылки читаем курс доллара за последние 10 дней:

#!pip install pandas==1.3.5 import pandas as pd url = ‘https://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=10/01/2022VAL_NM_RQ=R01235’ pd.read_xml(url)
Date Id Nominal Value 0 11.01.2022 R01235 1 75,1315 1 12.01.2022 R01235 1 74,8355 2 13.01.2022 R01235 1 74,5277 3 14.01.2022 R01235 1 74,5686 4 15.01.2022 R01235 1 75,7668 5 18.01.2022 R01235 1 76,0404 6 19.01.2022 R01235 1 76,3347 7 20.01.2022 R01235 1 76,8697

А также получаем все коды валют и котировки на сегодня:

Сделал Python программу для отслеживания курса валют


url1 = ‘http://www.cbr.ru/scripts/XML_daily.asp?date_req=20/01/2022′ pd.read_xml(url1, encoding=’cp1251’)

Вывод (выравнивать не буду):

ID NumCode CharCode Nominal Name Value 0 R01010 36 AUD 1 Австралийский доллар 55,2078 1 R01020A 944 AZN 1 Азербайджанский манат 45,2441 2 R01035 826 GBP 1 Фунт стерлингов Соединенного королевства 104,4813 3 R01060 51 AMD 100 Армянских драмов 15,9912 4 R01090B 933 BYN 1 Белорусский рубль 29,5823 5 R01100 975 BGN 1 Болгарский лев 44,5363 6 R01115 986 BRL 1 Бразильский реал 13,8079 7 R01135 348 HUF 100 Венгерских форинтов 24,3382 8 R01200 344 HKD 10 Гонконгских долларов 98,6521 9 R01215 208 DKK 1 Датская крона 11,7042 10 R01235 840 USD 1 Доллар США 76,8697 11 R01239 978 EUR 1 Евро 87,1318 12 R01270 356 INR 10 Индийских рупий 10,3020 13 R01335 398 KZT 100 Казахстанских тенге 17,5964 14 R01350 124 CAD 1 Канадский доллар 61,4564 15 R01370 417 KGS 100 Киргизских сомов 90,6315 16 R01375 156 CNY 1 Китайский юань 12,1011 17 R01500 498 MDL 10 Молдавских леев 42,5871 18 R01535 578 NOK 10 Норвежских крон 87,3887 19 R01565 985 PLN 1 Польский злотый 19,1848 20 R01585F 946 RON 1 Румынский лей 17,6173 21 R01589 960 XDR 1 СДР (специальные права заимствования) 107,8943 22 R01625 702 SGD 1 Сингапурский доллар 56,9237 23 R01670 972 TJS 10 Таджикских сомони 68,0564 24 R01700J 949 TRY 10 Турецких лир 56,4318 25 R01710A 934 TMT 1 Новый туркменский манат 21,9942 26 R01717 860 UZS 10000 Узбекских сумов 71,0569 27 R01720 980 UAH 10 Украинских гривен 27,0835 28 R01760 203 CZK 10 Чешских крон 35,7251 29 R01770 752 SEK 10 Шведских крон 84,0942 30 R01775 756 CHF 1 Швейцарский франк 83,9280 31 R01810 710 ZAR 10 Южноафриканских рэндов 49,7185 32 R01815 410 KRW 1000 Вон Республики Корея 64,4672 33 R01820 392 JPY 100 Японских иен 67,1967

Читайте также:
Win 7 как отключить программы

Источник: ru.stackoverflow.com

Блог про LibreOffice

В этой статье хочу рассмотреть пример скрипта на языке программирования Python3, который извлекает данные о текущем курсе валют с официального сайта Центрального Банка РФ и сохраняет их в отдельном файле, который в дальнейшем можно открыть с помощью LibreOffice Calc и применить к ним всю его мощь.

Пример больше интересен тем, что в нём используется парсинг XML-файла.

Сам скрипт находится здесь. Условно, скрипт решает три задачи:

  1. Скачивает XML-файл с курсами валют с сайта ЦБ РФ;
  2. Анализирует (парсит) XML-файл и извлекает оттуда информацию о курсах валют в нужной нам форме;
  3. Сохраняет полученную информацию в текстовом файле в виде значений, разделённых запятыми (CSV).

1-й этап

Сайт Центрального Банка РФ позволяет получать данные в виде XML-файлов. Подобнее об этом здесь.

В нашем примере мы получаем данные о ежедневных курсах валют, которые находятся по адресу http://www.cbr.ru/scripts/XML_daily.asp.

Для скачивания XML-файла с сайта ЦБ РФ используется модуль urllib.request :

import urllib.request url = «http://www.cbr.ru/scripts/XML_daily.asp»

Открываем URL и считываем его:

webFile = urllib.request.urlopen(url) data = webFile.read()

Далее нам надо сохранить данные в файл на жестком диске. По задумке файл должен иметь такое же название, как и конец URL-адреса, но с расширением .xml . Для этого сначала по слэшам разбивается весь URL-адрес и извлекается его концовка.

UrlSplit = url.split(«/»)[-1]

Затем концовка отсеченной части URL-адреса ( XML_daily.asp ) заменяется на xml :

ExtSplit = UrlSplit.split(«.»)[1] FileName = UrlSplit.replace(ExtSplit, «xml»)

Теперь открывается(или создается) на жестком диске файл, в который записываются информация, полученная с интернет страницы:

with open(FileName, «wb») as localFile: localFile.write(data)

И в конце выполняется закрытие веб-станицы:

webFile.close()

На этом первый этап завершен.

2-й и 3-й этапы

Парсинг XML-файла осуществляется с помощью стандартного модуля xml :

from xml.dom import minidom

Открываем для парсинга скачанный файл:

doc = minidom.parse(FileName)

Извлекаем дату из корневого элемента, которая прописана в качестве его первого атрибута:

root = doc.getElementsByTagName(«ValCurs»)[0]

XML-код этого элемента выглядит так:

Читайте также:
Почему при закрытии таблицы программа аксесс не предлагает выполнить сохранение внесенных данных

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

date = «Текущий курс валют на г. n».format(date= root.getAttribute(‘Date’))

Создадим еще одну строку, которая также будет записана в выходной файл и будет служить строкой таблицы с названиями столбцов (каждый столбец отделен от другого точкой с запятой ; ):

head = «Идентификатор; Номинал; Название валюты; Сокращение; Курс (руб) n»

Следующий кусок кода объединяет в себе два этапа. Сначала получаем все данные по валютам:

currency = doc.getElementsByTagName(«Valute»)

Затем открываем файл, в который будут записываться данные. Открывается он также с помощью менеджера контекста With . as :

with open(«exchange.txt»,»w») as out:

Записываем раннее подготовленные строки с датой и заголовками столбцов:

out.write(date) out.write(head)

Извлекаем данные по каждой валюте и записываем их в удобной для нас форме:

for rate in currency: sid = rate.getAttribute(«ID») charcode = rate.getElementsByTagName(«CharCode»)[0] name = rate.getElementsByTagName(«Name»)[0] value = rate.getElementsByTagName(«Value»)[0] nominal = rate.getElementsByTagName(«Nominal»)[0] str = «; ; ; ; n».format(sid, nominal.firstChild.data, name.firstChild.data, charcode.firstChild.data, value.firstChild.data) out.write(str)

Все, скрипт готов. Запускаем его командой python3 daily_rate.py и ищем в папке со скриптом файл exchange.txt .

Открываем CSV в LibreOffice и Google Документах

По сути у нас получился CSV-файл, который представляется собой таблицу, столбцы которой отделяются точкой с запятой, а строки — строками. LibreOffice Calc отлично понимает такие файлы (говорят, гораздо лучше чем Exсel).

Достаточно просто открыть наш файл exchange.txt с помощью LibreOffice Calc. Появится диалоговое окно, в котором необходимо поставить галочку напротив Точка с запятой и обязательно снять галочку напротив Запятая, так как запятая используется в качестве разделителя десятичных знаков в столбце с курсом валют.

Теперь можно использовать всю мощь LibreOffice Calc для дальнейшего анализа и построения графиков.

С таким же успехом CSV-файлы понимают и Google Документы.

Смотрите также:

  • Поиск и возврат значений (функции VLOOKUP и IFERROR)
  • Импорт таблицы с сайта
  • Python: Извлекаем имя файла из URL
  • LibreOffice Calc: Импорт xml-файлов

Источники

  • Python – Read XML file (DOM Example)
  • Центральный банк Российской Федерации

Источник: librerussia.blogspot.com

Программа на Python для отслеживания курса валюты

Курс валют постоянно находиться в нестабильном состоянии. Отслеживать его вручную не так удобно, поэтому предлагаем создать программу на Питон для автоматического трекинга.

Наша программа будет работать по следующему алгоритму:

  1. Парсим (копируем) данные из страницы поисковой выдачи Google;
  2. Проверяем изменения курса с момента запуска программы;
  3. Отправляем письмо на электронную почту при сильном изменении курса.

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

Читайте также:
На какой диск качать программы

Первое что необходимо сделать — это установить всё необходимое. Нам потребуется установить Python с официального сайта , скачать IDE, можно использовать PyCharm и далее создать внутри программы новый проект.

Внутри созданного проекта создаем новый файл с названием main.py . После этого сразу же через терминал выполняем установку библиотек: requests, а также beautiful soup.

pip install requests bs4

Библиотека requests позволяет обращаться к необходимому сайту и копировать всю его HTML разметку. Внутри HTML разметки выбрать нужные данные очень сложно, если использовать стандартные функции Python по типу: replace, join и прочих. Поэтому мы используем вторую библиотеку beautiful soup для быстрой и комфортной выборки необходимых данных из HTML.

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

import requests # Модуль для обработки URL from bs4 import BeautifulSoup # Модуль для работы с HTML import time # Модуль для остановки программы import smtplib # Модуль для работы с почтой # Основной класс class Currency: # Ссылка на нужную страницу DOLLAR_RUB = ‘https://www.google.com/search?sxsrf=ALeKk01NWm6viYijAo3HXYOEQUyDEDtFEw%3A1584716087546ei=N9l0XtDXHs716QTcuaXoAgoq=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+,», «.»)) # Метод для получения курса валюты def get_currency_price(self): # Парсим всю страницу full_page = requests.get(self.DOLLAR_RUB, headers=self.headers) # Разбираем через BeautifulSoup soup = BeautifulSoup(full_page.content, ‘html.parser’) # Получаем нужное для нас значение и возвращаем его convert = soup.findAll(«span», ) return convert[0].text # Проверка изменения валюты def check_currency(self): currency = float(self.get_currency_price().replace(«,», «.»)) if currency >= self.current_converted_price + self.difference: print(«Курс сильно вырос, может пора что-то делать?») self.send_mail() elif currency

Дополнительный курс

На нашем сайте также есть углубленный курс по изучению языка Питон . В ходе огромной программы вы изучите не только язык Питон, но также научитесь создавать веб сайты за счёт веб технологий и фреймворка Джанго. За курс вы изучите массу нового и к концу программы будете уметь работать с языком Питон, создавать на нём полноценные ПК приложения на основе библиотеки Kivy, а также создавать веб сайты на основе библиотеки Джанго.

Больше интересных новостей

Топ-10 сайтов, построенных с помощью Node.Js

Топ-10 сайтов, построенных с помощью Node.Js

Что такое вебхук? Разбираемся на практике

Что такое вебхук? Разбираемся на практике

На кого учиться в сфере IT в 2023 году: ТОП профессий

На кого учиться в сфере IT в 2023 году: ТОП профессий

Самый хитрый программист в мире

Самый хитрый программист в мире

Источник: itproger.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru