В этой статье разберём, как автоматически получать данные о погоде с сайта Gismeteo с помощью Python. Мы будем использовать библиотеки requests, BeautifulSoup и pandas для загрузки страницы, извлечения информации и сохранения данных в CSV-файлы.
Такой скрипт можно использовать для:
-
создания собственного погодного сервиса
-
анализа климатических данных
-
автоматического обновления информации на сайте
-
работы с данными в аналитике
Перед началом необходимо установить зависимости:
pip install requests beautifulsoup4 pandas
Используемые библиотеки:
-
requests — отправляет HTTP-запросы и получает HTML страницы
-
BeautifulSoup — позволяет удобно извлекать элементы из HTML
-
pandas — помогает структурировать данные и сохранять их в CSV
Получение HTML страницы
Сначала программа отправляет запрос к странице прогноза погоды.
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()
text = response.text
Если сайт временно недоступен, скрипт использует ранее сохранённую HTML-копию страницы:
except:
with open('data_weather.txt', 'r', encoding='utf-8') as f:
text = f.read()
Это делает парсер более устойчивым к ошибкам сети.
Парсинг прогноза на месяц
После получения HTML используется BeautifulSoup для поиска нужных элементов.
soup = BeautifulSoup(text, 'html.parser')
weather_items = soup.find_all(['div', 'a'], 'row-item-month-date')
Из каждого блока извлекаются:
-
дата
-
максимальная температура
-
минимальная температура
-
описание погоды
Пример структуры данных:
weather_data.append({
'date': f'{date} {q}',
'temp_max': maxt,
'temp_min': mint,
'description': description
})
Сохранение данных в CSV
После обработки данные сохраняются в таблицу:
df = pd.DataFrame(weather_data)
df.to_csv('weather_data.csv')
Пример результата:
| date | temp_max | temp_min | description |
|---|---|---|---|
| 12 мая | 18 | 9 | облачно |
| 13 мая | 21 | 11 | ясно |
Такой файл можно открыть в Excel или использовать для анализа.
Получение текущей погоды
Скрипт также получает текущие погодные условия.
Из страницы извлекаются:
-
текущая температура
-
ощущаемая температура
-
описание погоды
-
влажность
-
дата и время
Пример:
now_weather = soup_now.find('div', class_='now-weather').find('temperature-value').get('value', '')
Результат также сохраняется:
df.to_csv('weather_data_now.csv')
Пример итогового CSV
Файл weather_data_now.csv может выглядеть так:
| datetime | now_weather | now_feel | now_desc | now_hum |
|---|---|---|---|---|
| 12 мая 14:00 | 17 | 15 | облачно | 65% |
Что можно улучшить
Для более продвинутого использования можно добавить:
-
автоматический запуск через cron / scheduler
-
сохранение в базу данных
-
построение графиков температуры
-
API для сайта
-
Telegram-бот с прогнозом
С помощью Python можно быстро создать простой и эффективный парсер погоды.
Комбинация requests + BeautifulSoup + pandas позволяет получать данные, структурировать их и использовать в любых проектах.
Такой подход часто используется в:
-
аналитике данных
-
автоматизации
-
веб-разработке
-
мониторинге информации
Автор: Евгений Морковин




0 комментариев
Оставьте комментарий
Комментарии