при парсинге бот отвечает с огромной задержкой
сделал пару функций на получение курса валюты
код:
from app.bot import handler
from other_cmd import digit, digit_convert, number_to_emoji
from bs4 import BeautifulSoup
import aiohttp
from decimal import Decimal
from datetime import datetime
from app.models import Backpack
async def dollar_to_rub():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}
url = 'https://www.google.com/search?q=%D0%BA%D1%83%D1%80%D1%81+%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B0&oq=%D0%BA%D1%83%D1%80%D1%81+&aqs=chrome.0.69i59j69i57j0i131i433i512l2j69i59l2j69i61l2.2657j0j9&sourceid=chrome&ie=UTF-8'
async with aiohttp.ClientSession() as session:
response = await session.get(url=url, headers=headers)
soup = BeautifulSoup(await response.text(), 'html.parser')
dollar_currency = soup.findAll(
'span', {'class': 'DFlfde SwHCTb', 'data-precision': '2'})
return Decimal(dollar_currency[0].text.replace(',', '.'))
async def euro_to_rub():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
url = 'https://www.google.com/search?q=%D0%BA%D1%83%D1%80%D1%81+%D0%B5%D0%B2%D1%80%D0%BE&oq=%D0%BA%D1%83%D1%80%D1%81+%D0%B5%D0%B2&aqs=chrome.1.69i57j0i131i433i512l3j0i512j0i131i433i512j0i512j0i433i512l2j0i3.2916j1j7&sourceid=chrome&ie=UTF-8'
async with aiohttp.ClientSession() as session:
response = await session.get(url=url, headers=headers)
soup = BeautifulSoup(await response.text(), 'html.parser')
euro_currency = soup.findAll(
'span', {'class': 'DFlfde SwHCTb', 'data-precision': '2'})
return Decimal(euro_currency[0].text.replace(',', '.'))
async def btc_to_rub():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
url = 'https://www.google.com/search?q=%D0%BA%D1%83%D1%80%D1%81+%D0%B1%D0%B8%D1%82%D0%BA%D0%BE%D0%B8%D0%BD%D0%B0&oq=%D0%BA%D1%83%D1%80%D1%81+%D0%B1%D0%B8%D1%82%D0%BA&aqs=chrome.0.0i131i433i512j0i512j69i57j0i512j0i433i512j0i512l5.4321j1j7&sourceid=chrome&ie=UTF-8'
async with aiohttp.ClientSession() as session:
response = await session.get(url=url, headers=headers)
soup = BeautifulSoup(await response.text(), 'html.parser')
btc_currency = soup.findAll('span', {'class': 'pclqee'})
btc_currency = btc_currency[0].text
btc_currency = btc_currency.split()
btc_currency = ''.join(btc_currency)
return Decimal(btc_currency.replace(',', '.'))
async def birza(user):
do = datetime.now()
print(await dollar_to_rub())
print(13)
text = f'{user.mention()}, биржа\n\n'
text += 'Валюты: \n\n'
text += f'{await number_to_emoji(1)} Доллар >> {await dollar_to_rub()}₽\n'
text += f'{await number_to_emoji(2)} Евро >> {await euro_to_rub()}₽\n'
text += '\n\nКриптовалюты: \n\n'
text += f'{await number_to_emoji(3)} Биткоин >> {digit(await btc_to_rub())}₽\n\n'
text += '🔹 Купить » биржа купить [номер] [кол-во]\n'
text += '🔸 Продать » биржа продать[номер][кол-во]\n'
await user.reply(text,
keyboard=[[
{'label': '💼 Портфель', 'type': 'text', 'color': 'secondary',
'payload': {'payload': 'портфель'}}
]], inline=True)
await user.reply(f'Парсинг занял >> {datetime.now() - do}')
после ответа бот вывел сколько ему понадобилось времени для обработки, ответ: Парсинг занял » 0:08:45.958442
Озу 2 гб, 1 ядро
Источник: Stack Overflow на русском