Устанавливаем всё необходимое
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)