Как сделать прогноз погоды на python
Перейти к содержимому

Как сделать прогноз погоды на python

  • автор:

Прогноз погоды на Python

Нужно сделать именно прогноз погоды, НЕ ТЕКУЩУЮ погоду в определенном месте, как это делает pyowm, а именно прогноз, например, хочу узнать погоду в Минске в 15:00 через 7 дней. На всякий случай прикрепляю код pyowm, где определяется именно текущая погода в определенном месте:

from pyowm import OWM owm = OWM('my API') while True: try: place = input('What city do you want to know the weather in? Enter correct city name: ') monitoring = owm.weather_manager().weather_at_place(place) weather = monitoring.weather status = weather.detailed_status print(f'It is in now.') break except: pass 

Отслеживать

задан 5 сен 2020 в 16:30

Ivan Shevtsov Ivan Shevtsov

21 1 1 серебряный знак 5 5 бронзовых знаков

ну берете и просто вместо метода weather_at_place() используете forecast_at_place , как это указанно в документации к pyowm .

DNDK / weather.py

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

import requests
import time
rus =
»
>
par =
«lang» : «ru» ,
«lat» : 53 ,
«lon» : 30 ,
«appid» : «84061a2a5ff54b490d63bd38d557b06d» ,
«units» : «metric»
>
print ( «Соединение с сервером. » )
r = requests . get ( ‘http://api.openweathermap.org/data/2.5/weather?’ , params = par )
r_hourly = requests . get ( ‘http://api.openweathermap.org/data/2.5/forecast?’ , params = par )
«»» CURRENT «»»
print ( «——————-Погода сейчас——————-» )
data = r . json ()
print ( ‘***********’ , end = » )
descript = data . get ( «weather» )[ 0 ]. get ( «description» )
print ( descript , end = » )
print ( ‘***********’ )
temp = data . get ( «main» ). get ( «temp» )
#temp = round(1.8*(temp-273)+32)
#temp = round((5/9)*(temp-32))
print ( «Температура(*C)» , temp )
hum = data . get ( «main» ). get ( «humidity» )
print ( «Влажность» , hum , «%» )
wind_speed = data . get ( «wind» ). get ( «speed» )
print ( ‘Скорость ветра’ , wind_speed )
«»»BY HOURS»»»
print ( «——————-На ближайшее время——————-» )
forecast = r_hourly . json (). get ( ‘list’ )[: 5 ]
for i in forecast :
dt = i . get ( ‘dt_txt’ )
print ( dt , ‘:’ )
print ( «Будет <>» . format ( i . get ( «weather» )[ 0 ]. get ( «description» )))
print ( «Подробно:» )
print ( » Температура:» , i . get ( «main» ). get ( «temp» ), «*C» )
print ( » Влажность:» , i . get ( «main» ). get ( «humidity» ), «%» )
press = int ( i . get ( «main» ). get ( «pressure» ))
print ( » Давление(мм.рт.ст):» , press / 133 )
print ( «——————————————————————————» )
print ( «Данные от openweathermap.org» )

Создание погодного приложения на Python Django

В ходе урока вы создадите полноценное приложение на Python и Django. Программа будет получать информацию про погодные условия в различных городах мира. Все значения будут храниться в базе данных.

Видеоурок

Полезные ссылки:

  1. API для погоды ;
  2. Официальный сайт Django ;
  3. Большой курс по Python ;
  4. Модуль requests .

В ходе урока была создана программа, которая получает данные от пользователя и отображает погоду в заданном городе.

Простенький прогноз погоды на Python

Мы будем получать прогноз погоды через поиск google. Определимся с ссылкой:

city = "Москва" # Пока так, потом сделаем ввод города. link = f"https://www.google.com/search?q=погода+в+" # City - это город, который будет вводиться пользователем.

Получаем User-Agent. Для этого переходим в html код через функцию «Просмотреть код». Переходим во вкладку Network. Тыкаем на любой пункт. Листаем вниз и копируем User-Agent

Создаём словарь headers с нашим User-Agent.

headers =

Отправляем get запрос и проверяем код состояния.

responce = requests.get(link, headers=headers) print(response) # При успешном запросе выведится код состояния

Получаем html страничку с помощью bs4.

soup = BeautifulSoup(responce.text, "html.parser") print(soup) # Выводится код html который мы и будем парсить

Теперь посмотрим код в браузере и найдем где лежат нужные нам данные. Для этого нажмём правой кнопкой мыши по браузеру и выберем ‘Просмотреть код’ или ‘Исследовать элемент’ в зависимости от браузера.

Как вы видите информация о температуре находится в class: «wob_t q8U8x» и id: «wob_tm», сейчас нам понадобится только id. Тем же способом выясняем id остальных характеристик.

Теперь нехитрым образом вытаскиваем информацию в консоль.

# Парсим погоду temperature = soup.select("#wob_tm")[0].getText() title = soup.select("#wob_dc")[0].getText() humidity = soup.select("#wob_hm")[0].getText() time = soup.select("#wob_dts")[0].getText() wind = soup.select("#wob_ws")[0].getText() # Выводим на экран print(time) print(title) print(f"Температура: C") print(f"Влажность: ") print(f"Ветер: ")

Теперь давайте обернём наш код в функцию check_weather:

def check_weather(city): # Код который мы написали.

Готово. Создадим точку входа, в которой будем вводить город и вызывать функцию check_weather.

if __name__ == "__main__": city = str(input("Город: ")) check_weather(city=city)

import requests from bs4 import BeautifulSoup def check_weather(city): headers = < "User-Agent" : "Ваш User-Agent" >responce = requests.get(f"https://www.google.com/search?q=погода+в+", headers=headers) print(responce) soup = BeautifulSoup(responce.text, "html.parser") temperature = soup.select("#wob_tm")[0].getText() title = soup.select("#wob_dc")[0].getText() humidity = soup.select("#wob_hm")[0].getText() time = soup.select("#wob_dts")[0].getText() wind = soup.select("#wob_ws")[0].getText() print(time) print(title) print(f"Температура: C") print(f"Влажность: ") print(f"Ветер: ") if __name__ == "__main__": city = str(input("Город: ")) check_weather(city=city) 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *