Python实战之天气预测
这里使用request
库和正则表达式进行数据的爬取
爬取网上的历史天气数据,这里我使用了成都的历史天气数据(2011-2018年)
之后的天气预测也将会使用成都的历史天气数据
目标网址: http://tianqi.2345.com
这里说明:
由于数据存在缺失,2016年以前的空气质量数据没有找到
通过分析网址我们得到最后的数据都是存在于js文件中的。
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。
response = requests.get(url)
if response.status_code == 200:
html = response.text
return html
else:
return None
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。
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)
这里暂时简单分析数据,之后会有文章进行详细分析
可见数据变化趋势是非常明显的。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有