Найти тему
Свой Айтишник

Python: получаем прогноз погоды в Telegram

Всем доброго времени суток.

В этой статье напишем небольшую программу для отправки прогноза погоды себе в Telegram.

Суть программы:

С сайта https://world-weather.ru будем брать актуальные данные о погоде, температуру, облачность, осадки, давление, влажность, ветер и т.д. Полученные данные отправим себе в Telegram.

Для нашей программы понадобятся библиотеки: requests и BeautifulSoup

Сразу их импортируем. В папке я создал файл pogoda.py и открыв командную строку в этой папке я установил эти библиотеки:

pip install requests
pip install bs4 - он же (BeautifulSoup)

requests - через эту библиотеку будем обращаться к сайту.

BeautifulSoup - через эту библиотеку будем искать нужные нам данные на сайте.

Начнем с того, что зайдем на сайт с прогнозом и найдем свой город в поиске. (У меня город Саранск) Скопируем получившуюся ссылку на город: https://world-weather.ru/pogoda/russia/saransk/.

Откроем файл pogoda.py и импортируем ранее установленные библиотеки:

Создадим переменную pog и передадим её URL адрес нашего сайта с городом:

-2

Создадим переменную "r" через которую будем передавать запросы с сайта. И переменной soup присвоим параметры нашего парсера (сборщика данных с сайта)

-3

Зайдём на сайт с прогнозом и посмотрим в каком теге, классе или id находится текст с температурой, я использую браузер Opera, поэтому я нажимаю по цифре с температурой правой кнопкой - просмотреть код:

-4

Вижу что тэг - div, а id - weather-now-number.

Пишу цикл для поиска температуры в этом теге и id:

-5

Для temp ищем в div айди weather-now-number, а в нём текст и присваиваем переменной temp полученное значение температуры воздуха.

Такой же цикл делаю для осадков, облачности:

Заметьте тут уже тэг span и другой id
Заметьте тут уже тэг span и другой id

Цикл для времени и даты прогноза:

-7

timew.text[6:-3] - это я в результате в тексте убираю в начале 6 символов и с конца 3, так как там были не нужные для меня данные.

И цикл для других данных:

-8

Тут мы получаем давление, влажность, по ощущениям, направление и скорость ветра и другие параметры. Всё это выводится в состоянии без пробелов, поэтому на форуме я нашел цикл который помогает расставить пробелы (Код цикла: с 21 по 29 строчки) и приводит конечный результат в более менее нормальный вид.

В переменную dr я присваиваю все эти данные в нормальном виде и отсекаю 5 символов с конца, там была не нужная информация, вроде про ультрафиолет.

Осталось дело за малым, всё это соединить в единое целое, вывести в консоль и отправить себе в телеграм в личные сообщения.

-9

Переменной send_tg присваиваем все наши переменные о погоде и командой print выводим в консоль:

Результат работы программы в консоли
Результат работы программы в консоли

Теперь отправим себе в мессенджер #Telegram Если у Вас нет бота в телеграме, то как его создать я писал в своих статьях, например тут:

От бота должен быть токен. Присвоим его в переменную bot. И отправим себе сообщение:

-11

chat_id= id вашего аккаунта в Telegram или id группы где находится Ваш бот. (Как узнать id я тоже писал в своей статье)

Сохранимся, запустим наш код и о чудо! В "личку" в Telegram пришло сообщение от моего бота:

-12

Немного дополню: можно эту программу добавить в планировщик задач, что бы он запускал ее например утром каждого дня когда вы просыпаетесь, проснувшись вы увидите актуальный прогноз уже у Вас в сообщениях. Как то так =)

Вот весь код:

-13

Всем спасибо кто дочитал, ну и по традиции: развивайтесь, не сидите на месте и будьте здоровы! До новых встреч, дамы и господа!

#parser #парсер #прогноз погоды #телеграм #свой айтишник #получаем прогноз погоды python #питон #уроки python #программирование для начинающих