Ответы пользователя по тегу API
  • Проблема с выводом парсера у Vk бота. Что делать?

    Vast-Nectarine
    @Vast-Nectarine
    Пишу очень плохой код
    По ошибке видно, что массив p3 - пустой. Я не знаю, что хранится в p3, но, судя по всему, выполняется метод findAll.
    Можно сделать вывод, что findAll ничего не смог найти.
    Если честно, не морочьте голову и используйте openweathermap api для получения информации о погоде в каком-либо городе.
    мои мысли

    Приведите в порядок ваш код.
    Вместо
    request = requests.get("https://vk.com/id"+str(user_id))
    используйте f-строки
    request = requests.get(f"https://vk.com/id{user_id}")
    Лучше вообще таким образом не получать данные о пользователе. Используйте этот метод, чтобы получить информацию о пользователях. (Также можно сохранять в базу данных, но что если пользователь поменяет имя?)

    Используйте модуль logging, чтобы вести логи, а не использовать print.
    Сделайте больше проверок, обрабатывайте ошибки:
    1) Что если произойдет ошибка в
    request = requests.get("https://vk.com/id"+str(user_id))
    ?
    2) Что если сам long polling выдаст какую-нибудь ошибку?
    3) Что если вам сразу напишут много людей?
    import bs4 as bs4 Зачем? Достаточно import bs4
    И по мелочи:
    1) Используйте клавиатуру вместо команд ПРИВЕТ, ПОКА...
    2) Вместо сложной конструкции:
    vk.method('messages.send', ...)
    Используйте
    api = vk.get_api()
    api.messages.send(user_id=user_id, message=message, random_id=random.randint(0, 2048))

    3) Не называйте перменные как weather1 или p3. Почитайте про оформление кода.
    4) lxml быстрее парсит HTML. soup = BeautifulSoup(some_html, 'lxml')
    Его еще нужно установить pip install lxml Спасибо, Falconer

    Ответ написан
    Комментировать