import requests
from aiogram import Bot, Dispatcher, executor, types
import time
from bs4 import BeautifulSoup
EURO_RUB = 'https://www.google.com/search?q=euro+to+ruble&newwindow=1&sxsrf=APwXEde8pFrfqho1nOYcU2NFF-_YaVBCCg%3A1680350839745&ei=dx4oZP_5LLKB9u8P_v-OwAs&ved=0ahUKEwi_kZrX0oj-AhWygP0HHf6_A7gQ4dUDCA8&uact=5&oq=euro+to+ruble&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIMCAAQigUQQxBGEIICMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEOgoIABBHENYEELADOgoIABCKBRCwAxBDOgQIIxAnOgoILhDHARDRAxAnOgsILhCABBDHARDRAzoHCAAQigUQQzoHCC4QigUQQzoQCC4QigUQxwEQ0QMQ1AIQQzoHCAAQgAQQCjoKCAAQgAQQFBCHAjoPCAAQgAQQFBCHAhBGEIICSgQIQRgAUIEIWLIeYL4iaAFwAXgAgAH0AYgBrAySAQU1LjcuMZgBAKABAcgBCsABAQ&sclient=gws-wiz-serp'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'} # добавляем в код ссылку на страницу, с которой берем курс валюты и данные сетевого агента
def get_value(): # инициализация функции, которая парсит страницу и достает значение
full_page = requests.get(EURO_RUB, headers=headers)
soup = BeautifulSoup(full_page.content, 'html.parser') # передаем ссылку и данные сетевого агента в локальные переменные
convert = soup.findAll("span", {"class": "DFlfde", "class": "SwHCTb", "data-precision": 2}) # используем функцию bs4, которая ищет нужный элемент на странице по его классам и характеристике data-precision
print(convert[0].text) # просто тестовый принт взятого с веб-страницы значения
fin = "Актуальный курс Евро (EUR):\n" + str(round(float(convert[0].text.replace(',', '.'))*1.05, 2)) + "\n" + "Актуальный курс Сербского Динара(RSD):\n"+ currdin = str(round(float(convert[0].text.replace(',', '.'))*1.05/117, 2)) + "\n" "Для обновления курса нажмите /refresh"
return fin # делаю строковую переменную для вывода сообщения через бота, плюс умножил курс на комиссию брокера и свифт-перевода, а также посчитал курс сербских динаров через курс евро
API_TOKEN = '5653760842:AAGQrVSXGQkMXpia3Ce9DNp2G60v3v291o8' # токен тг бота
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot) # создание переменных bot, которая равна функции bot(token) из библиотеки aiogram и переменной dp , которая равна функции dispatcher
@dp.message_handler(commands=['start']) # этот хэндлер сработает тогда, когда пользователь отправит /start
async def send_welcome(message: types.Message):
await message.reply(get_value()) # при срабатывании хэндлера вызывается функция get_value()
@dp.message_handler(commands=['refresh']) # тот же самый хэндлер с той же функцией в теле, но вызывается по команде /refresh
async def send_welcome(message: types.Message):
await message.reply(get_value())
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True) # зацикливание программы
выдает ошибку:
Я, видимо, не совсем понял, в каком виде он возвращает значение