Как сделать асинхронный парсер рабочим?
Здоров. Есть следующий код на aiogram:
import asyncio
from aiogram import Bot, Dispatcher, types
import config
import sqlite3
import requests
from bs4 import BeautifulSoup as BS
import time
import logging
bot = Bot(config.TOKEN, parse_mode="HTML")
dp = Dispatcher(bot)
db = sqlite3.connect('db.db', check_same_thread=False)
cursor = db.cursor()
logging.basicConfig(level=logging.INFO)
def1 = ''
async def pollling(wait_for):
while True:
global def1
r = requests.get("https://tsn.ua/news")
soup = BS(r.content, 'html.parser')
site = soup.find("h3", class_="c-card__title")
link = soup.find("a", class_="c-card__link")
qwe = link.get("href")
if def1 == site.text:
pass
else:
def1 = site.text
result = cursor.execute("SELECT `user_id` FROM `tbl` WHERE `tsnall` = ?", (1,)).fetchall()
xd = len(result)
for y in range(xd):
asd = str(result[y])
ac = asd[1 : -2]
await bot.send_message(ac, (f'{site.text} \n {qwe}'))
await asyncio.sleep(wait_for)
#handlers
async def main():
task1 = asyncio.create_task(pollling(10))
await task1
await dp.start_polling(bot)
if __name__ == '__main__':
asyncio.run(main())
По идее бот должен асинхронно парсить свежие новости с сайта и отвечать на запросы пользователя, но при запуске он только парсит сайт. В самом коде хендлеры конечно же есть, решил не тратить буквы. Подскажите как исправить код.
Источник: Stack Overflow на русском