前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Python进行天气预测之获取数据

使用Python进行天气预测之获取数据

原创
作者头像
YingJoy_
修改于 2018-05-23 12:52:55
修改于 2018-05-23 12:52:55
3.2K00
代码可运行
举报
文章被收录于专栏:应兆康的专栏应兆康的专栏
运行总次数:0
代码可运行

0. 前言

Python实战之天气预测

1. 爬取数据

这里使用request库和正则表达式进行数据的爬取

爬取网上的历史天气数据,这里我使用了成都的历史天气数据(2011-2018年)

之后的天气预测也将会使用成都的历史天气数据

目标网址: http://tianqi.2345.com

这里说明:

由于数据存在缺失,2016年以前的空气质量数据没有找到

通过分析网址我们得到最后的数据都是存在于js文件中的。

1.1 构造日期:

代码语言:txt
AI代码解释
复制
for year in range(2011, 2019):
    for month in range(1, 13):
        if month == 12 and year > 2016:
            month = "%.2d".format() % month
            url = "http://tianqi.2345.com/t/wea_history/js/" + str(year) + str(month) + "/56294_" + str(year) + str(
                month) + ".js"
        else:
            url = "http://tianqi.2345.com/t/wea_history/js/56294_" + str(year) + str(month) + ".js"
        print(url)
        getData(url)

通过分析链接可以,在2016年以前,每个12月的链接和一般的链接是不一样的。

所以我们加上了判断语句,当然细心的小伙伴应该可以看到我们这里还会构造出2019年的链接,这个错误链接我们在后面获取数据的时候会进行处理,若链接是没用的,我们选择不处理,直接pass。

1.2 获取网页源码

代码语言:txt
AI代码解释
复制
response = requests.get(url)
if response.status_code == 200:
    html = response.text
    return html
else:
    return None

1.3 使用正则表达式提取数据

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
results = re.findall("(\{ymd.*?\})", html)
for result in results:
    # 日期
    date = re.search("(\d{4}-\d{1,2}-\d{1,2})", result).group().strip()
    # 最高气温
    bWendu = re.search("bWendu:'(.*?)',yWendu", result).groups()[0].strip()
    # 最低气温
    yWendu = re.search("yWendu:'(.*?)',tianqi", result).groups()[0].strip()
    # 天气情况
    tianqi = re.search("tianqi:'(.*?)',fengxiang", result).groups()[0].strip()
    # 风向
    fengxiang = re.search("fengxiang:'(.*?)',fengli", result).groups()[0].strip()
    # 风力
    fengli = re.search("fengli:'(.*?)'", result).groups()[0].strip()
    try:
        # 空气指数
        aqi = re.search("aqi:'(.*?)',aqiInfo", result).groups()[0].strip()
    except:
        aqi = 'NULL'
    try:
        # 空气指数信息
        aqiInfo = re.search("aqiInfo:'(.*?)',aqiLevel", result).groups()[0].strip()
    except:
        aqiInfo = 'NULL'
    try:
        # 空气等级
        aqiLevel = re.search("aqiLevel:'(\d{1,2})'}", result).groups()[0].strip()
    except:
        aqiLevel = 'NULL'

使用正则表达式匹配出上面那些信息,由于空气指数系列数据2016年前不存在,所以我们设置它为NULL。

1.4 组合数据写入文件

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
s = date + " " + bWendu + " " + yWendu + " " + tianqi + " " + fengxiang + " " + fengli + " " + aqi + " " + aqiInfo + " " + aqiLevel + "\n"
with open('cd_weather.txt', 'a', encoding='utf-8') as f:
    f.write(s)

得到成都历史天气数据(2011-2018年)(点击可下载)

1.5 分析数据

这里暂时简单分析数据,之后会有文章进行详细分析

2011-2018年成都气温
2011-2018年成都气温

可见数据变化趋势是非常明显的。

本文代码下载地址:https://yingjoy.cn/downloads/weather/getData.py

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
爬取720万条城市历史天气数据
内容爬虫完毕,校验完毕,缺失信息暂未统计。总数据720万,地区3200个,年份从2011-2019,大小950Mb,原始数据已丢失,需要的朋友可以自己运行脚本挂一晚上。中间遇到了很多坑,有机会我再写一遍博客专门讲讲大量数据爬虫遇到的坑。
FunTester
2019/10/24
1.1K0
Python数据分析之Pandas(一)
-: | :-----: | :----: | :-------: | | 0 | 1 | 1 | 4.0 | 964982703 | | 1 | 1 | 3 | 4.0 | 964981247 | | 2 | 1 | 6 | 4.0 | 964982224 | | 3 | 1 | 47 | 5.0 | 964983815 | | 4 | 1 | 50 | 5.0 | 964982931 |
yuanshuai
2022/08/22
1.6K0
Pandas | 数据统计
本次我们介绍Pandas数据统计函数,如针对数值类型的统计(获取样本个数、平均值、标准差、极值等);针对非数值类型的统计(获取每个类型的个数)以及计算相关系数和协方差。
生信real
2022/12/20
8140
Pandas中字符串处理
怎样提取201803这样的数字月份? 1、先将日期2018-03-31替换成20180331的形式 2、提取月份字符串201803
北山啦
2022/11/27
3410
Pandas中字符串处理
Python数据分析之Pandas(五)
: | ---: | ---: | ---: | ---: | ---: | | 0 | S001 | 怠涵 | 女 | 23 | 山东 | | 1 | S002 | 婉清 | 女 | 25 | 河南 | | 2 | S003 | 溪榕 | 女 | 23 | 湖北 | | 3 | S004 | 漠涓 | 女 | 19 | 陕西 | | 4 | S005 | 祈博 | 女 | 24 | 山东 |
yuanshuai
2022/08/22
1.2K0
Python数据分析之Pandas(五)
Python数据分析之Pandas(三)
: | -----: | ------: | -----: | --------: | | 0 | 1 | 1193 | 5 | 978300760 | | 1 | 1 | 661 | 3 | 978302109 | | 2 | 1 | 914 | 3 | 978301968 | | 3 | 1 | 3408 | 4 | 978300275 | | 4 | 1 | 2355 | 5 | 978824291 |
yuanshuai
2022/08/22
1.5K0
Python数据分析之Pandas(三)
Python数据分析之Pandas(二)
: | ---------: | -----: | -----: | ------: | --------: | -----: | ---: | ------: | -------: | | 0 | 2018-01-01 | 3℃ | -6℃ | 晴~多云 | 东北风 | 1-2级 | 59 | 良 | 2 | | 1 | 2018-01-02 | 2℃ | -5℃ | 阴~多云 | 东北风 | 1-2级 | 49 | 优 | 1 | | 2 | 2018-01-03 | 2℃ | -5℃ | 多云 | 北风 | 1-2级 | 28 | 优 | 1 | | 3 | 2018-01-04 | 0℃ | -8℃ | 阴 | 东北风 | 1-2级 | 28 | 优 | 1 | | 4 | 2018-01-05 | 3℃ | -6℃ | 多云~晴 | 西北风 | 1-2级 | 50 | 优 | 1 |
yuanshuai
2022/08/22
1.7K0
Python数据分析之Pandas(二)
基于地图API获取天气预报并展示
​本文主要介绍的是如何利用天气预报的api,在前台显示天气预报,有时候在开发某系统时,可能需要查看未来几天的天气情况,不用利用爬虫技术,也可以轻松的获取到未来几天的天气情况,通过气象局的接口http://wthrcdn.etouch.cn/weather_mini?citykey=101280101(citykey是指城市代码,我这里用的是广州),由于接口返回响应的数据是json字符串(注意看到响应的数据,不要马上以为是json对象,后面demo会介绍到),所以我们可以就能对获取到的天气预报的信息进行处理,填入表格或者其他组件的位置。
小明爱吃火锅
2024/04/29
2660
Pandas的分组聚合groupby
Pandas怎样实现groupby分组统计 groupby:先对数据分组,然后在每个分组上应用聚合函数、转换函数 import pandas as pd import numpy as np %matplotlib inline df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], 'B': ['one', 'one', 'two', 'three', 'two
北山啦
2022/11/27
1.8K0
Pandas的分组聚合groupby
2011-2021年全国各省市区县每日天气【附下载,附代码】
为了让他们更好的更直观的理解沿海地区比内陆地区的温差小,陈老师不能口说无凭,一定得拿出点让人心服口服的数据来,哪怕他们只是十几岁的孩子:
陈学谦
2021/11/04
1.6K0
2011-2021年全国各省市区县每日天气【附下载,附代码】
大牛教大家如何用SpringBoot技术快速实现天气预报系统
通过这个系统,一方面可以了解Spring Boot的全面用法,为后续创建微服务应用打下基础;另一方面,该系统会作为本节进行微服务架构改造的非常好的起点。
愿天堂没有BUG
2022/10/28
7920
大牛教大家如何用SpringBoot技术快速实现天气预报系统
Pandas | 如何新增数据列?
在数据分析时,原始数据往往不能满足我们的需求,经常需要按照一定条件创建新的数据列或者修改原有数据列,然后进行后续分析。
生信real
2022/12/20
2.3K0
python3爬取墨迹天气并发送给微信好
先随便观察一个城市的墨迹天气,例如石家庄市的url为“https://tianqi.moji.com/weather/china/hebei/shijiazhuang”,多观察几个城市的url可发现共同点就是,前面的都一样,后面的是以省拼音/市拼音结尾的。当然直辖市两者拼音一样。当然还有一些额外情况,比如山西和陕西,后者的拼音是Shaanxi,这个用户输入的时候注意一下
py3study
2020/01/03
1.2K0
python3爬取墨迹天气并发送给微信好
移动开发(七):.NET MAUI使用RESTAPI实现查询天气笔记
在移动开发过程中,第三方对接是非常常见的。今天给大家分享.NET MAUI如何使用REST API实现输入城市名称查询天气的示例,希望对大家学习.NET MAUI可以提供一些帮助!
小明互联网技术分享社区
2024/09/24
3460
移动开发(七):.NET MAUI使用RESTAPI实现查询天气笔记
【Python爬虫五十个小案例】爬取中国天气网城市天气
文章链接:https://cloud.tencent.com/developer/article/2472928
小馒头学Python
2024/12/02
1.6K0
【Python爬虫五十个小案例】爬取中国天气网城市天气
编程 | 用python获取天气数据,并作定时播报
思路 1.调用和风天气的API,获取天气数据 2.用百度语音API,将天气数据合成语音 3.用树莓派每天早上定时播报天气(定时任务crontab + Python脚本 + mpg123播放器) Pyt
小莹莹
2018/04/24
1.8K0
编程 | 用python获取天气数据,并作定时播报
Python每日一谈|No.22.实例.3-Life.1-每日一句名人名言+天气预报
简介:绘文字(日语:絵文字/えもじemoji)是日本在无线通信中所使用的视觉情感符号,绘指图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。在NTTDoCoMo的i-mode系统电话系统中,绘文字的尺寸是12x12像素,在传送时,一个图形有2个字节。Unicode编码为E63E到E757,而在Shift-JIS编码则是从F89F到F9FC。基本的绘文字共有176个符号,在C-HTML4.0的编程语言中,则另增添了76个情感符号。最早由栗田穰崇(Shigetaka Kurita)创作,并在日本网络及手机用户中流行。自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。
DrugScience
2021/03/22
7810
Python每日一谈|No.22.实例.3-Life.1-每日一句名人名言+天气预报
Pandas | 数据筛选
本文框架 0. 导入Pandas 1. 数据读取与预处理 2. 使用单个label值筛选数据 3. 使用列表名批量筛选 4. 使用区间进行范围筛选 5. 使用条件表达式筛选 5.1 简单条件表达式 5.2 复杂条件筛选 5.3 定义函数筛选 0. 导入Pandas import pandas as pd 1. 数据读取与预处理 # 数据读取 data = pd.read_csv("./datas/03/Weather_2018.csv") --------------------------------
生信real
2022/12/20
1.3K0
Python数据可视化:2018年空气质量分析
92.5是年均AQI值,从上面科普知识里可以知道,2017年天津整体空气质量只能是「良」中的下下等水平,与轻度污染近在咫尺。
数据森麟
2019/09/27
2.2K0
Python数据可视化:2018年空气质量分析
springcloud微服务实践:天气数据API微服务的实现
天气数据API微服务包含了天气数据查询组件。天气数据查询组件提供了天气数据查询的接口。
愿天堂没有BUG
2022/10/28
3720
springcloud微服务实践:天气数据API微服务的实现
相关推荐
爬取720万条城市历史天气数据
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验