当前位置: 首页 > news >正文

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

今天,我们就来学习如何使用 Python 爬取天气预报数据,并用数据可视化的方式将未来几天的天气信息一目了然地展示出来。

在本文中,我们将分三步完成这一任务:

  1. 使用 Python 爬取天气数据
  2. 数据解析与处理
  3. 用可视化展示天气趋势

让我们开始吧!

第一步:准备工作

在正式开始之前,我们需要安装一些常用的 Python 库。这些库可以帮助我们更高效地获取数据、解析内容以及进行数据可视化。

首先,打开终端,安装以下库:

pip install requests
pip install beautifulsoup4
pip install matplotlib
pip install pandas

各库介绍:

  • requests: 用来发送 HTTP 请求,获取网页数据。
  • beautifulsoup4: 用于解析 HTML 数据,提取网页中的有用信息。
  • matplotlibpandas: 用于处理数据,并创建漂亮的可视化图表。

第二步:爬取天气预报数据

现在,让我们编写 Python 代码,爬取一个天气预报网站的数据。这里我们将使用 中国天气网 作为数据来源。通过发送请求并解析页面中的 HTML 结构,我们可以轻松获取我们想要的天气信息。

爬取数据的源码

 

代码

import requests
from bs4 import BeautifulSoup
import pandas as pddef 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)

说明:

  1. requests.get(url): 我们首先使用 requests 库向天气网站发送 HTTP 请求,并获取返回的网页内容。
  2. BeautifulSoup: 然后用 BeautifulSoup 来解析 HTML 数据,提取出我们需要的天气预报信息,如日期、天气情况、温度和风力。
  3. pandas.DataFrame: 最后,我们将这些数据存储在一个 DataFrame 中,方便后续的可视化处理。

运行上述代码后,你将看到一个表格,包含未来几天的天气情况。是不是感觉数据已经一目了然?但我们还可以做得更好!接下来,我们将这些数据用图表展示出来。

第三步:天气数据可视化

为了让天气预报看起来更直观,我们可以使用 Python 中强大的 matplotlib 库来绘制温度变化的折线图。我们将提取出每一天的最低温度和最高温度,并展示它们随时间的变化。

可视化的源码

import matplotlib.pyplot as pltdef 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)

代码解析:

  1. 数据清洗:我们从温度字段中分别提取出最低温度和最高温度,并将它们转换为数值类型,方便绘图。
  2. 绘图:使用 matplotlib 创建折线图,分别绘制最低温和最高温的变化趋势。
  3. 显示图表:我们设置了图表标题、标签和图例,使整个图表更加清晰易读。

最终效果

当你运行完所有代码后,系统将为你生成一张清晰的折线图,展示未来几天的最低温度和最高温度。你可以轻松地观察温度的波动,提前规划好出行的衣物搭配或户外活动。

总结

通过本文,我们学习了如何使用 Python 爬取天气预报数据,并使用 matplotlib 进行可视化展示。这一过程不仅适用于天气数据的展示,还可以广泛应用于其他数据爬取和分析任务。掌握这些技术,你就可以轻松搭建属于自己的数据分析和展示系统,让信息变得更加直观、生动。

现在,你只需每天运行一下这个脚本,就能及时获取最新的天气预报,提前为每一天做好准备!

相关文章:

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

今天,我们就来学习如何使用 Python 爬取天气预报数据,并用数据可视化的方式将未来几天的天气信息一目了然地展示出来。 在本文中,我们将分三步完成这一任务: 使用 Python 爬取天气数据数据解析与处理用可视化展示天气趋势 让我…...

最左侧冗余覆盖子串

题目描述 给定两个字符串 s1 和 s2 和正整数 k,其中 s1 长度为 n1,s2 长度为 n2。 在 s2 中选一个子串,若满足下面条件,则称 s2 以长度 k 冗余覆盖 s1 该子串长度为 n1 k 该子串中包含 s1 中全部字母 该子串每个字母出现次数…...

性能测试-JMeter(2)

JMeter JMeter断言响应断言JSON断言断言持续时间 JMeter关联正则表达式提取器正则表达式正则表达式提取器 XPath提取器JSON提取器 JMeter属性JMeter录制脚本 JMeter断言 断言:让程序自动判断预期结果和实际结果是否一致 提示: -Jmeter在请求的返回层面有…...

芯课堂 | Synwit_UI_Creator(μgui)平台之图像处理篇

今天小编给大家介绍的是UI_Creator(μgui)平台下关于图像处理的选项。 UI_Creator(μgui)平台图片类控件有图像控件和分级图像控件,均包含以下选项: 1、消除水波纹: 由于16位真彩色&#xff08…...

QT C++ 软键盘/悬浮键盘/触摸屏键盘的制作

目录 1、前言 2、界面设计 3、英文、数字的输入 4、符号的输入 5、中文的输入 6、中文拼音库的选择 7、其他 8、结语 1、前言 使用QT C在带显示器的Linux系统 开发板上(树莓派等)编写操作UI界面时,很多时候都需要一个软键盘来输入文字…...

element-ui点击文字查看图片预览功能

今天做一个点击文字查看图片的功能&#xff0c;大体页面长这样子&#xff0c;点击查看显示对应的图片 引入el-image-viewer&#xff0c;点击的文字时候设置图片预览组件显示并传入图片的地址 关键代码 <el-link v-if"scope.row.fileList.length > 0" type&…...

SpringBoot集成Redis使用Cache缓存

使用SpringBoot集成Redis使用Cache缓存只要配置相应的配置类&#xff0c;然后使用Cache注解就能实现 RedisConfig配置 新建RedisConfig配置类 package com.bdqn.redis.config;import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annota…...

【瑞萨RA8D1 CPK开发板】lcd显示

1.8寸lcd使用gpio模拟spi驱动 由于板子引出的接口限制&#xff0c;故使用gpio模拟spi驱动中景园的1.8寸lcd 1.77寸液晶屏 1.8寸TFT LCD SPI TFT彩屏st7735驱动128x160高清屏-淘宝网 (taobao.com) 使用RASC 的gpio配置 根据厂家提供的驱动文件移植 #define LCD_SCLK_Clr() g…...

算法收敛的一些证明方法与案例

证明一个算法收敛通常涉及多个角度&#xff0c;以下是一些常用的方法和示例&#xff1a; 一、方法 1. 数学归纳法 通过数学归纳法证明算法在每一步的输出结果都在收敛范围内。 示例&#xff1a;考虑一个递归算法&#xff0c;假设我们要证明它在每一步中输出的值逐渐接近目标…...

基于vue框架的蛋糕店网上商城740g7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,店长,商品分类,商品信息,订单投诉,反馈信息 开题报告内容 基于Vue框架的蛋糕店网上商城开题报告 一、项目背景与意义 随着互联网技术的快速发展和普及&#xff0c;电子商务已成为现代商业的重要组成部分。蛋糕作为一种受欢迎的美…...

你真的了解Canvas吗--解密六【ZRender篇】

目录 &#x1f4da;入口 Circle - 图形 Group - 组 事件捕获 - 流程 step - 1 step - 2 总结 这篇文章我们讲讲Circle圆形&#xff0c;Group组的使用以及大家最熟悉又陌生的事件捕获和冒泡在ZRender中的实现&#xff0c;篇幅较长&#xff0c;且听我慢慢分析。 &#x…...

孤独相伴 - 结婚十七年

07年的今天&#xff0c;我和老公请假&#xff0c;去了新加坡的大使馆领证。 17年后的今天&#xff0c;此刻凌晨16分&#xff0c; 这是17年来我第一次这么早写结婚纪念&#xff0c;只是凑巧。 今天的心情莫名其妙。 此刻&#xff0c;两个词出现在我的脑海&#xff1a;孤独 &am…...

json-server,跨域

启动json-serer json-server --watch db.json 注意&#xff1a; db.json为json文件的名称&#xff0c;你自己的文件名叫什么&#xff0c;就启动对应的文件就可以了 启动json-server的时候&#xff0c;必须在你db.json所在的文件夹下进行启动 这样服务器就可以启动成功了&…...

【Conda】修复 Anaconda 安装并保留虚拟环境的详细指南

目录 流程图示1. 下载 Anaconda 安装程序2. 重命名现有的 Anaconda 安装目录Windows 操作系统Linux 操作系统 3. 运行新的 Anaconda 安装程序Windows 操作系统Linux 操作系统 4. 同步原环境使用 robocopy 命令&#xff08;Windows&#xff09;使用 rsync 命令&#xff08;Linux…...

转行高薪 AI 产品经理,快速入门方法在此处

根据《2024年中国AI大模型场景探索及产业应用调研报告》&#xff0c;当前整体AI大模型行业仍然处于萌芽期&#xff0c;但市场规模增速较快。2023年我国AI大模型行业规模达到了147亿元&#xff0c;近三年复合增速高达114%。预计2024年&#xff0c;该市场规模将进一步增长至216亿…...

初识环境变量

初识环境变量 目录&#xff1a; 什么是环境变量常见的环境变量Linux中与环境变量的有关的命令如何获取环境变量环境变量的特点环境变量的作用 1.什么是环境变量 我们在Linux操作系统下&#xff0c;使用指令&#xff0c;比如ls,pwd,cd等等&#xff0c;可以直接使用&#xff0c…...

成像基础 -- 景深计算

景深计算 景深&#xff08;Depth of Field, DOF&#xff09;指的是在摄影中&#xff0c;能够清晰成像的物体前后距离的范围。景深的大小取决于多个因素&#xff0c;包括焦距、光圈值、物距以及相机感光元件的尺寸。 1. 景深的主要参数 焦距&#xff08; f f f&#xff09;&a…...

Git中从dev分支恢复master分支

问题 需要从dev分支恢复master分支。之前搞错远程地址了&#xff0c;把master分支搞乱了&#xff0c;现在需要从dev分支恢复代码到master分支。 步骤 git checkout dev # 切换到 dev 分支 git branch -D master # 删除本地 master 分支 git checko…...

12.5 Linux_进程间通信_信号灯

概述 什么是信号灯&#xff1a; 信号灯也称为信号量&#xff0c;代表的是一类资源&#xff0c;其值表示系统中该资源的数量。 主要用途是实现进程、线程的同步。 什么是P/V操作&#xff1a; P操作就是申请资源&#xff0c;V操作就是释放操作。 信号灯的种类&#xff1a; …...

Linux——cp-mv-rm命令

cp命令 复制文件 cp test01.txt test02.txt 复制文件夹 cp -r hsy01 hsy02 mv命令 移动文件/文件夹 rm命令 删除文件 rm test.txt 删除文件夹&#xff08;目录 rm -r hsy01 通配符 * 匹配任意内容 注意* 位置 强制删除-f root超级管理员...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...