В прошлом посте («Быстрый старт») мы собрали заголовки с новостного сайта. По результатам опросника, сегодня идём дальше и напишем полезный парсер погоды с Gismeteo.
Почему именно погода?
📌 частая задача на фрилансе (когда приходится парсить информацию с сайтов, делать рассылки и т.д.)
📌 тренировка для понимания динамических страниц
📌 легко показать клиенту результат
✨ Код: парсим температуру для города
import requests
from bs4 import BeautifulSoup
# URL страницы погоды для Москвы
url = "https://www.gismeteo.ru/weather-moscow-4368/"
# Делаем запрос (User-Agent нужен, чтобы сайт "поверил", что мы браузер)
html = requests.get(url, headers={"User-Agent": "Mozilla/5.0"}).text
# Создаём объект BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
# Находим тег <temperature-value> (он хранит температуру в атрибуте "value")
temp_tag = soup.find("temperature-value")
# Забираем число и преобразуем к int
temperature = int(temp_tag["value"])
# Добавляем знак: +, − или ничего (для нуля)
if temperature > 0:
sign = "+"
elif temperature < 0:
sign = "−"
else:
sign = ""
# Выводим результат
print(f"Москва: {sign}{abs(temperature)}°C")
❄️ Как это работает:
☀️requests скачивает страницу;
☀️BeautifulSoup разбирает HTML;
☀️<temperature-value> имеет атрибут value, где хранится число (может быть отрицательным зимой ❄️);
☀️мы вручную добавляем знак «+» или «−»;
☀️результат выводим красиво.
🛠 Что можно докрутить:
☀️добавить выбор города (через аргумент или список URL);
☀️вытягивать прогноз на несколько дней вперёд;
☀️упаковать в Telegram-бота («/weather Москва» → ответ с температурой).
