Всем доброго времени суток.
В этой статье напишем небольшую программу для отправки прогноза погоды себе в 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 адрес нашего сайта с городом:
Создадим переменную "r" через которую будем передавать запросы с сайта. И переменной soup присвоим параметры нашего парсера (сборщика данных с сайта)
Зайдём на сайт с прогнозом и посмотрим в каком теге, классе или id находится текст с температурой, я использую браузер Opera, поэтому я нажимаю по цифре с температурой правой кнопкой - просмотреть код:
Вижу что тэг - div, а id - weather-now-number.
Пишу цикл для поиска температуры в этом теге и id:
Для temp ищем в div айди weather-now-number, а в нём текст и присваиваем переменной temp полученное значение температуры воздуха.
Такой же цикл делаю для осадков, облачности:
Цикл для времени и даты прогноза:
timew.text[6:-3] - это я в результате в тексте убираю в начале 6 символов и с конца 3, так как там были не нужные для меня данные.
И цикл для других данных:
Тут мы получаем давление, влажность, по ощущениям, направление и скорость ветра и другие параметры. Всё это выводится в состоянии без пробелов, поэтому на форуме я нашел цикл который помогает расставить пробелы (Код цикла: с 21 по 29 строчки) и приводит конечный результат в более менее нормальный вид.
В переменную dr я присваиваю все эти данные в нормальном виде и отсекаю 5 символов с конца, там была не нужная информация, вроде про ультрафиолет.
Осталось дело за малым, всё это соединить в единое целое, вывести в консоль и отправить себе в телеграм в личные сообщения.
Переменной send_tg присваиваем все наши переменные о погоде и командой print выводим в консоль:
Теперь отправим себе в мессенджер #Telegram Если у Вас нет бота в телеграме, то как его создать я писал в своих статьях, например тут:
От бота должен быть токен. Присвоим его в переменную bot. И отправим себе сообщение:
chat_id= id вашего аккаунта в Telegram или id группы где находится Ваш бот. (Как узнать id я тоже писал в своей статье)
Сохранимся, запустим наш код и о чудо! В "личку" в Telegram пришло сообщение от моего бота:
Немного дополню: можно эту программу добавить в планировщик задач, что бы он запускал ее например утром каждого дня когда вы просыпаетесь, проснувшись вы увидите актуальный прогноз уже у Вас в сообщениях. Как то так =)
Вот весь код:
Всем спасибо кто дочитал, ну и по традиции: развивайтесь, не сидите на месте и будьте здоровы! До новых встреч, дамы и господа!
#parser #парсер #прогноз погоды #телеграм #свой айтишник #получаем прогноз погоды python #питон #уроки python #программирование для начинающих