Загрузка...

Тг бот ошибка(RuntimeError: There is no current event loop in thread WorkerThread2)

Тема в разделе Python создана пользователем hoholmostwanted 8 янв 2021. 436 просмотров

  1. hoholmostwanted
    hoholmostwanted Автор темы 8 янв 2021 Заблокирован(а) 35 1 ноя 2019
    Код
    from urllib.parse import quote

    import telebot
    from bs4 import BeautifulSoup
    from fake_useragent import UserAgent
    from requests_html import HTMLSession


    # получаем html код
    def get_html(search_text):
    session = HTMLSession(verify=False)
    url = f"http://rozetka.com.ua/search/?text={quote(search_text)}"
    ua = UserAgent()
    headers = {'user-agent': ua.chrome}
    r = session.get(url, headers=headers)
    r.html.render(timeout=15)
    return r.html.html
    # получаем нужные данные со страницы
    def get_data(html):
    result = ['']
    soup = BeautifulSoup(html, 'lxml')
    all_li = soup.find_all('li', {'class': 'catalog-grid__cell', 'class': 'catalog-grid__cell_type_slim'})
    for li in all_li:
    name = li.find('span', class_='goods-tile__title').text
    price = li.find('span', class_='goods-tile__price-value').text
    link = li.find('a', class_='goods-tile__picture').get('href')
    print(f"Название товара: {name}\n Цена: {price}\n Ссылка: {link}")
    result.append(f"Название товара: {name}\n Цена: {price}\n Ссылка: {link}")
    return result


    def start_bot():
    bot = telebot.TeleBot('1236132073:AAEtZk-gz5y17tf8f11ofgtBCpw0R4dGiEw')



    @bot.message_handler(commands=['start'])
    def start_message(message):
    bot.send_message(message.chat.id, 'Привет! Этот бот предназначен для парсинга товаров с сайта розетка по ключевым словам\nОтправь ключевые Слова в следующем сообщении!')

    @bot.message_handler(content_types=['text'])
    def send_result(message):
    bot.send_message(message.chat.id, f"Результат:\n\n {get_data(get_html(message.text))}")

    bot.polling()


    start_bot()
     
  2. hoholmostwanted
    hoholmostwanted Автор темы 8 янв 2021 Заблокирован(а) 35 1 ноя 2019
    от чего может быть данная ошибка?
    RuntimeError: There is no current event loop in thread WorkerThread2
     
  3. Pcholken
    Pcholken 8 янв 2021 Заблокирован(а) 819 27 янв 2019
    Это просто означает, что вы не создали цикл для этого потока, и если вы не пропустите цикл при создании клиента, он будет использовать asyncio.get_event_loop(), который работает только в основном потоке.
     
    1. hoholmostwanted Автор темы
      Pcholken, я немного не понял, можете пожалуйста указать на ошибку?или подробнее объяснить что нужно сделать, чтобы решить проблему?
Top
Загрузка...