Как стать автором
Обновить

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

Уровень сложностиПростой

Устанавливаем всё необходимое

  • pip install requests

  • pip install bs4

Импортируем библиотеки

import requests
from bs4 import BeautifulSoup

Пишем основной код

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

city = "Москва" # Пока так, потом сделаем ввод города.

link = f"https://www.google.com/search?q=погода+в+{city}"

# City - это город, который будет вводиться пользователем.

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

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

headers = {
        "User-Agent" : "Ваш User-Agent"
        }

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

responce = requests.get(link, headers=headers)

print(response) # При успешном запросе выведится код состояния <Response [200]>

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

soup = BeautifulSoup(responce.text, "html.parser")

print(soup) # Выводится код html который мы и будем парсить

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

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

Температура:

id="wob_tm"

Состояние:

id="wob_dc"

Влажность:

id="wob_hm"

Дата и время:

id="wob_dts"

Ветер:

id="wob_ws"

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

# Парсим погоду
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"Температура: {temperature}C")
print(f"Влажность: {humidity}")
print(f"Ветер: {wind}")

Теперь давайте обернём наш код в функцию 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=погода+в+{city}", 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"Температура: {temperature}C")
    print(f"Влажность: {humidity}")
    print(f"Ветер: {wind}")

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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.