首页 > Python资料 博客日记
Python 爬取天气预报并进行可视化分析
2025-01-15 09:30:08Python资料围观10次
文章Python 爬取天气预报并进行可视化分析分享给大家,欢迎收藏Python资料网,专注分享技术知识
今天,我们就来学习如何使用 Python 爬取天气预报数据,并用数据可视化的方式将未来几天的天气信息一目了然地展示出来。
在本文中,我们将分三步完成这一任务:
- 使用 Python 爬取天气数据
- 数据解析与处理
- 用可视化展示天气趋势
让我们开始吧!
第一步:准备工作
在正式开始之前,我们需要安装一些常用的 Python 库。这些库可以帮助我们更高效地获取数据、解析内容以及进行数据可视化。
首先,打开终端,安装以下库:
pip install requests
pip install beautifulsoup4
pip install matplotlib
pip install pandas
各库介绍:
requests
: 用来发送 HTTP 请求,获取网页数据。beautifulsoup4
: 用于解析 HTML 数据,提取网页中的有用信息。matplotlib
和pandas
: 用于处理数据,并创建漂亮的可视化图表。
第二步:爬取天气预报数据
现在,让我们编写 Python 代码,爬取一个天气预报网站的数据。这里我们将使用 中国天气网 作为数据来源。通过发送请求并解析页面中的 HTML 结构,我们可以轻松获取我们想要的天气信息。
爬取数据的源码
代码
import requests
from bs4 import BeautifulSoup
import pandas as pd
def get_weather_data(city_code):
# 目标URL:通过城市代码获取该城市的天气预报
url = f"http://www.weather.com.cn/weather/{city_code}.shtml"
# 发送HTTP请求获取网页数据
response = requests.get(url)
response.encoding = 'utf-8' # 设置编码为utf-8
# 使用BeautifulSoup解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
# 从网页中提取天气数据
forecast_data = []
weather_list = soup.find('ul', class_='t clearfix').find_all('li')
for weather in weather_list:
date = weather.find('h1').text # 提取日期
weather_desc = weather.find('p', class_='wea').text # 提取天气情况
temp = weather.find('p', class_='tem').text.strip() # 提取温度
wind = weather.find('p', class_='win').find('span')['title'] # 提取风力信息
# 将每条天气数据存储为字典
forecast_data.append({
'date': date,
'weather': weather_desc,
'temperature': temp,
'wind': wind
})
# 将数据转换为DataFrame,便于后续处理
weather_df = pd.DataFrame(forecast_data)
return weather_df
# 使用城市代码获取天气数据,以下代码为北京的天气预报(代码为101010100)
city_code = '101010100'
weather_df = get_weather_data(city_code)
print(weather_df)
说明:
requests.get(url)
: 我们首先使用requests
库向天气网站发送 HTTP 请求,并获取返回的网页内容。BeautifulSoup
: 然后用BeautifulSoup
来解析 HTML 数据,提取出我们需要的天气预报信息,如日期、天气情况、温度和风力。pandas.DataFrame
: 最后,我们将这些数据存储在一个DataFrame
中,方便后续的可视化处理。
运行上述代码后,你将看到一个表格,包含未来几天的天气情况。是不是感觉数据已经一目了然?但我们还可以做得更好!接下来,我们将这些数据用图表展示出来。
第三步:天气数据可视化
为了让天气预报看起来更直观,我们可以使用 Python 中强大的 matplotlib
库来绘制温度变化的折线图。我们将提取出每一天的最低温度和最高温度,并展示它们随时间的变化。
可视化的源码
import matplotlib.pyplot as plt
def visualize_weather(weather_df):
# 数据清洗:提取出温度中的最高温和最低温
weather_df['temperature_min'] = weather_df['temperature'].apply(lambda x: int(x.split('/')[1].replace('℃', '').strip()))
weather_df['temperature_max'] = weather_df['temperature'].apply(lambda x: int(x.split('/')[0].replace('℃', '').strip()))
# 设置图表尺寸
plt.figure(figsize=(10, 5))
# 画出最低温度和最高温度的折线图
plt.plot(weather_df['date'], weather_df['temperature_min'], label='最低温度 (°C)', marker='o', color='b')
plt.plot(weather_df['date'], weather_df['temperature_max'], label='最高温度 (°C)', marker='o', color='r')
# 添加图表标题和标签
plt.title('未来几天天气预报')
plt.xlabel('日期')
plt.ylabel('温度 (°C)')
plt.xticks(rotation=45)
plt.legend()
# 自动调整布局
plt.tight_layout()
# 显示图表
plt.show()
# 可视化天气数据
visualize_weather(weather_df)
代码解析:
- 数据清洗:我们从温度字段中分别提取出最低温度和最高温度,并将它们转换为数值类型,方便绘图。
- 绘图:使用
matplotlib
创建折线图,分别绘制最低温和最高温的变化趋势。 - 显示图表:我们设置了图表标题、标签和图例,使整个图表更加清晰易读。
最终效果
当你运行完所有代码后,系统将为你生成一张清晰的折线图,展示未来几天的最低温度和最高温度。你可以轻松地观察温度的波动,提前规划好出行的衣物搭配或户外活动。
总结
通过本文,我们学习了如何使用 Python 爬取天气预报数据,并使用 matplotlib
进行可视化展示。这一过程不仅适用于天气数据的展示,还可以广泛应用于其他数据爬取和分析任务。掌握这些技术,你就可以轻松搭建属于自己的数据分析和展示系统,让信息变得更加直观、生动。
现在,你只需每天运行一下这个脚本,就能及时获取最新的天气预报,提前为每一天做好准备!
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程