Python 爬取天气预报并进行可视化分析

天气预报是很多人日常生活中非常关注的信息,而通过编程手段自动化获取天气数据,并进行可视化分析,不仅可以帮助我们更好地理解天气变化,还能提升我们的编程能力。本文将通过 Python 实现天气数据的爬取、处理和可视化。

一、环境准备

在开始之前,需要确保你的环境中安装了以下库:

pip install requests beautifulsoup4 matplotlib pandas
  • requests:用于发送 HTTP 请求,以获取数据。
  • beautifulsoup4:用于解析 HTML 页面。
  • matplotlib:用于数据可视化。
  • pandas:用于数据处理。

二、数据爬取

我们选择一个公开的天气预报网站,例如 “中国气象局” 或 “天气网”,在这里以“天气网”为例进行说明。我们将抓取某城市的天气预报数据。

以下是爬取天气数据的示例代码:

import requests
from bs4 import BeautifulSoup
import pandas as pd

def get_weather_data(city):
    # 替换成你需要请求的天气网站
    url = f'http://www.weather.com.cn/weather/{city}.shtml'
    response = requests.get(url)
    response.encoding = response.apparent_encoding  # 适应编码
    soup = BeautifulSoup(response.text, 'html.parser')

    weather_data = []

    # 获取未来几天的天气情况
    weather_items = soup.find_all('ul', class_='t clearfix')[0].find_all('li')
    for item in weather_items:
        date = item.find('h1').get_text()
        weather_type = item.find('p', class_='wea').get_text()
        temperature = item.find('p', class_='tem').get_text().replace('℃', '')
        weather_data.append({
            'date': date,
            'weather_type': weather_type,
            'temperature': int(temperature)  # 转换成整数
        })

    return pd.DataFrame(weather_data)

# 获取北京的天气数据
df = get_weather_data('101010100')  # 用城市的ID进行查询
print(df)

三、数据处理

在爬取完成后,我们需要进行必要的数据清洗和处理,以便后续分析和可视化。

# 清洗数据
df['temperature'] = pd.to_numeric(df['temperature'], errors='coerce')  # 转换为数值型
df.dropna(inplace=True)  # 删除缺失值

四、数据可视化

使用 matplotlib 对天气数据进行简单的可视化,展示未来几天的温度变化。

import matplotlib.pyplot as plt

def plot_weather(df):
    plt.figure(figsize=(10, 5))
    plt.plot(df['date'], df['temperature'], marker='o', linestyle='-', color='b')
    plt.title('未来几天气温变化')
    plt.xlabel('日期')
    plt.ylabel('温度 (℃)')
    plt.grid()
    plt.xticks(rotation=45)  # 旋转日期标签,以便更好显示
    plt.tight_layout()
    plt.show()

# 绘制天气变化图
plot_weather(df)

五、总结

通过以上步骤,我们实现了使用 Python 爬取天气预报数据,并对数据进行了可视化分析。这样的方法可以帮助个人在不同场景下获取和理解天气信息,灵活运用爬虫和数据分析的技能。

我们可以将爬取的数据持续更新,结合数据分析,预测天气变化趋势,这在不同领域都是十分有用的技能。希望这篇文章能够给你带来灵感,激发你在数据爬取和可视化分析方面的探索欲望!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部