@White_User_Python

Код работает без ошибок но в консоль ничего не выводит почему?

Необходимо спарсить погоду с сайта
import telebot 
import requests

bot = telebot.TeleBot(token)

@bot.message_handler(commands=['start'])

def start_message(message):
    keyboard = telebot.types.ReplyKeyboardMarkup(True)
    keyboard.row('Старт парсинг!')
    bot.send_message(message.chat.id, 'Добро пожаловать повелитель!\n Что прикажешь делать ?', reply_markup=keyboard)

@bot.message_handler(content_types=['text'])
def send_text(message):
    if message.text[:7] == "Погода " or message.text[:7] == "Погода":
        city = message.text[7:]
        r = requests.get('https://www.gismeteo.ua/weather-Gorod/'% (city))
        data = r.json()
        temp = data["main"]["temp"]
        bot.send_message(message.chat.id, "Температура в {}: {} C".format(city, temp))

bot.polling()
  • Вопрос задан
  • 525 просмотров
Решения вопроса 1
@o5a
Во-первых, сама подстановка названия в ссылку некорректная.
r = requests.get('https://www.gismeteo.ua/weather-Gorod/'% (city))


Судя по примеру реальной ссылки "https://www.gismeteo.ua/weather-kyiv-4944/"
Там должно быть
r = requests.get('https://www.gismeteo.ua/weather-%s/'% (city))

или
r = requests.get(f'https://www.gismeteo.ua/weather-{city}/')

И чтобы бот ответил, ему надо писать в виде "Погода kyiv-4944"

Во-вторых, скорее всего понадобится передать заголовки, чтобы запрос был похож на браузер, хотя бы простые
r = requests.get(f'https://www.gismeteo.ua/weather-{city}/', headers={'User-agent': 'Mozilla/5.0'})


И насколько вижу, никакого json запрос не возвращает, это просто HTML страница, так что данные придется доставать самому, например через bs4.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@crinnyx
Чтобы он выводит что-то сделай вот так в начале:
import telebot 
import requests

bot = telebot.TeleBot(token)
print('Бот начал работу')

@bot.message_handler(commands=['start'])


Всё, теперь он будет выводить. А у тебя он не выводит ничего, потому что ты и ничего не сделал чтобы он выводил это.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы