如何用python爬取天气预报,python爬虫爬取天气预报

如何用python爬取天气预报,python爬虫爬取天气数据 大家好,本文将围绕python爬虫爬取天气数据讲解展开说明,如何用python爬取天气预报是一个很多人都想弄明白的事情,想搞清楚python爬虫爬取天气数据需要先了解以下几个事情。天气预报我们每天都会关注,我们可以根据未来的天气增减衣物、安排出行,每天的气温、风速风向、相对湿度、空气质量等成为关注的焦点。 阅读详情

大家好,小编来为大家解答以下问题,python爬虫爬取天气数据讲解,python爬取天气数据生成窗口,今天让我们一起来看看吧!

 目的:从天气网站中爬取数据,生成excel表格,里面存储南昌市近十一年的天气情况,并对爬取产生的数据进行数据分析。

第一步:编写代码进行数据爬取

首先,导入 requests 模块,并调用函数 requests.get(),从天气的网站上面获
取该函数所需要的各种参数,然后对里面的参数进行相应的赋值
其次,使用 pandas.concat().to_excel 函数,将爬取的结果保存到表格中,并
将其命名后保存到和代码文件相同的文件位置上

代码如下:

import pandas
import requests
url = 'https://tianqi.2345.com/Pc/GetHistory'
params = {'areaInfo[areaId]': 58606, 'areaInfo[areaType]': 2,
'date[year]': 2011,'date[month]': 1}
headers = {'user-agent': '''Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
Edg/107.0.1418.62'''}
def craw_table(year,month):
params = {'areaInfo[areaId]': 58606, 'areaInfo[areaType]': 2,
'date[year]': year, 'date[month]': month}
pr = requests.get(url, headers=headers, params=params)
data = pr.json()['data']
df = pandas.read_html(data)[0]
return df
df_list=[]
for year in range(2011,2022):
for month in range(1,13):
print('爬取',year,month)
df = craw_table(year, month)
df_list.append(df)
#在py文件的文件夹中保存一个表格
pandas.concat(df_list).to_excel('南昌近十一年天气统计.xlsx',index=False)

结果展示:生成表格

表格内部数据形式:

 第二步:根据表格数据进行数据分析

代码展示:

import tkinter as tk
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import warnings

warnings.filterwarnings('ignore')
#确保正确输出中文和负数
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 使用tkinter模板
root = tk.Tk()
root.title('南昌近十一年天气信息查询界面')
root.geometry('700x700')
#禁止修改窗口的大小
root.resizable(False, False)
# 设置标签
label1 = tk.Label(root, text='请选择想要获取何种的数据:', font=('楷书', 15))
label1.place(x=45, y=15)


def task_1():
    # 跳转到一个新的内容显示界面
    root1 = tk.Tk()
    root1.title('特定时间的天气查询')
    root1.geometry('700x700')
    root1.resizable(False, False)
    # 进行查询结果的展示
    label2 = tk.Label(root1, text='请输入日期,以 - 分隔:', font=('楷书', 15), background='white')
    label2.place(x=45, y=15)
    # 创建输入文本框
    text = tk.Text(root1, font=('宋体', 15))
    text.place(x=300, y=15, width=160, height=30)

    # 设置几个小按钮,用来点击查询和清空内容
    # 设置查询函数
    def get_data():
        # 获取文本,并进行缺失值的填充
        data1 = (pd.read_excel('南昌近十年天气统计.xlsx')).fillna('该年份没有统计该数据')
        # 获取文本内容
        str = (text.get("0.0", "end"))[0:10]
        for i in range(0, 4005):
            if str == data1.loc[i, '日期'][0:10]:
                put_data(data1.loc[i])

    def put_data(data):
        # 输出文本内容
        label2 = tk.Label(root1, text='查询结果为:', font=('楷书', 15), background='white')
        label2.place(x=45, y=150)
        text1 = tk.Text(root1, font=('宋体', 15))
        text1.place(x=200, y=150, width=320, height=250)
        text1.insert(index=tk.END, chars='时间:' + data[0])
        text1.insert(index=tk.END, chars='\n\n最高温:' + data[1] + 'C')
        text1.insert(index=tk.END, chars='\n\n最低温:' + data[2] + 'C')
        text1.insert(index=tk.END, chars='\n\n天气:' + data[3])
        text1.insert(index=tk.END, chars='\n\n风力风向:' + data[4])
        text1.insert(index=tk.END, chars='\n\n空气质量指数:' + data[5])

    # 设置查询按钮
    button1 = tk.Button(root1, text="查询", command=get_data, font=('楷书', 15))
    button1.place(x=200, y=60, width=50, height=50)

    # 设置清空函数
    def delete_text():
        text.delete(0.0, tk.END)

    # 设置清空按钮
    button2 = tk.Button(root1, text="清空", command=delete_text, font=('楷书', 15))
    button2.place(x=330, y=60, width=50, height=50)
    # 设置退出按钮
    button3 = tk.Button(root1, text="退出", command=root1.destroy, font=('楷书', 15))
    button3.place(x=450, y=60, width=50, height=50)
    # 显示界面
    root1.mainloop()


button1 = tk.Button(root, text="输入日期,显示当天天气的所有被记录的信息", command=task_1, font=('楷书', 15),
                    background='white')
button1.place(x=100, y=50, width=500, height=50)


def task_2():
    plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
    data1 = pd.read_excel('南昌近十年天气统计.xlsx').fillna('该年份没有统计该数据')
    root1 = tk.Tk()
    root1.title('某个年份(2011-2021)中的各个月份的最高气温和最低气温')
    root1.geometry('700x700')
    root1.resizable(False, False)
    # 进行查询结果的展示
    label2 = tk.Label(root1, text='请输入年份(2011-2021):', font=('楷书', 15), background='white')
    label2.place(x=200, y=15)
    # 创建输入文本框
    text = tk.Text(root1, font=('宋体', 15))
    text.place(x=425, y=15, width=160, height=30)

    # 进行数据的处理
    def get_data():
        list1 = []
        list2 = []
        list_months = ['-01', '-02', '-03', '-04', '-05', '-06', '-07', '-08', '-09', '-10', '-11
【python爬虫课程设计】天气预报——分类数据爬取+数据可视化 通过Python网络爬虫爬取天气预报让我们快速获取和分析大量的天气数据,并通过可视化手段展示其特征和规律。140 df['最高气温'] = df['最高气温'].apply(lambda x: ''.join(jieba.cut(x))).str.replace('℃', '').astype(float)13 df['最高气温'] = df['最高气温'].apply(lambda x: ''.join(jieba.cut(x))).str.replace('℃', '').astype(float) 阅读详情

相关推荐

如何用python爬取天气预报,基于python网络爬虫天气

(补充,也可以在软件通常都有的“关于”信息中找到)举个例子:我们移动鼠标到层次500hPa,就可以自动定位到500hPa层级按钮对应的HTML元素了,查看到它的属性,可以看到500hPa这个按钮对应的页面元素是link文字。Selenium对网页的控制是基于各种HTML结构元素的,在使用过程中,对于网页各类元素的定位是基础,只有准确抓取到对应元素才能进行后续的自动化控制。Selenium是一个Web的自动化(测试)工具,它可以根据我们的指令,让浏览器执行自动加载页面,获取需要的数据等操作。

Bxwfjdjdbdgj的博客 1379

python基础爬虫——爬取天气预报信息

困于心衡于虑而后作 今天的学习目标是:编写爬虫程序爬取天气预报信息并保存到数据库 技术实现: 1、 爬取普通的网页信息,查看浏览器的user-agnet 2、 编写sql语句,创建相应的数据表,并编写存储数据的语句 3、 实现爬取中国天气网的信息(由于地区限制,现在爬取不了天气,之后将在其他网站上实现) 1.python代码爬取网页信息并显示 首先查看自己浏览器的user-agent 打开检查,点击网络network,然后重新加载自己的页面,就会出现如下界面: 随便点击一项进去之后,就可以看见返回信息

felldeng的博客 6656

python自动化获取城市天气

本文介绍了使用Python requests库自动获取城市天气的方法。通过wttr.in天气API接口,输入城市名称即可返回JSON格式的天气数据。示例代码演示了如何解析API响应,提取天气状况和温度信息。该方法简单易用,只需安装requests库并调用API即可实现天气查询功能,适合用于各种需要天气数据的自动化场景。

LDC,公众号【轻松学编程】 238

深入浅出Python网络爬虫:从入门到实战(附爬虫实战代码)

本文介绍了Python网络爬虫的基本原理、常用库及工具,并详细讲解了一个完整的天气预报爬虫项目。通过反爬虫策略的介绍,我们了解到在爬虫开发中应灵活使用各种技巧,避免被封禁或拦截。掌握这些技能后,您可以尝试爬取其他结构化数据的网站,应用到实际的数据分析和机器学习项目中。

qq_20245171的博客 774

【AI落地】AI生成测试用例,claude or gpt?(提效至少 50%)

gpt生成测试用例?当然好使啦,用好了提效50%+,用不好就让他变好!

青禾tester 1969

从‘最长白列’到‘八邻域’:智能车图像巡线算法怎么选?我的踩坑经验分享

本文深入探讨了全国大学生智能汽车竞赛中图像巡线算法的选型与优化,对比了最长白列法、八邻域算法等五种主流方法的性能与适用场景。通过实战数据和代码示例,分析了各算法在直道、弯道及特殊赛道元素中的表现,并提供了内存优化、参数调整等实用技巧,帮助参赛团队提升智能车的巡线精度与效率。

weixin_30374009的博客 639

Cesium+Three.js融合实战:从零构建GIS与BIM一体化大场景

本文详细介绍了Cesium与Three.js融合技术在GIS与BIM一体化大场景中的应用实践。通过坐标系转换、双引擎协同渲染等核心技术,实现宏观地理信息与微观建筑细节的完美结合,为智慧城市、数字孪生等项目提供高效解决方案。文章包含环境配置、性能优化等实战经验,助力开发者快速掌握三维可视化开发技巧。

weixin_42563415的博客 262

华大HC32F460从零到200MHz:手把手教你配置时钟系统(附避坑指南)

本文详细解析了华大HC32F460 MCU的时钟系统配置,从启动过程、时钟树分析到实战配置200MHz系统时钟。文章手把手指导开发者如何正确配置外部晶振、MPLL锁相环及总线分频,并提供了硬件检查、代码解读及常见问题排查的避坑指南,帮助用户从零构建稳定可靠的高性能时钟环境。

net55的博客 296

OpenClaw Windows 安装指南

好的,我来一步一步带你在 Windows 上安装 OpenClaw。

m0_60605453的博客 550

某易将军令口令纯算法还原py篇

算法开源,将军令口令算法。希望官方多多更新吧

任雪飘的博客 3909

用生成式AI自动生成测试用例的完整教程

本文旨在帮助测试工程师、开发人员快速掌握“生成式AI自动生成测试用例”的核心技术,覆盖从概念理解、工具选择到实战落地的全流程。无论是Web应用、API接口还是移动端功能测试,你都能找到可复用的方法。本文将按照“概念→原理→实战→避坑”的逻辑展开:先通过生活案例理解生成式AI如何生成测试用例,再拆解核心算法原理,接着用Python代码演示完整生成流程,最后分享实际应用中的优化技巧和未来趋势。生成式AI:能“创造内容”的AI模型(如ChatGPT、CodeLlama),像会写作文的智能笔。测试用例。

AIGC应用创新大全的博客 1581

使用GitLab限制开发者使用CI/CD的权限,三种方案

使用三种方案来限制开发人员的CI/CD权限。

知无涯 5097

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: python大作业代码及文档,python大作业设计报告
下一篇: python编写程序后怎么运行,python程序写好怎么运行
普通网友
博客等级 码龄22年 1万+粉丝 2784原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值