利用 Python 得到未来七天天气预报
因为自己平时都不看手机上的天气 app,因此都是出门之后“冷暖自知”,而在秦皇岛晚上总是会被冻得瑟瑟发抖,因此想写一个小脚本可以查询未来几天的天气,让自己选择合适的衣服。
经过查询,选择中国天气网 ,里面有七天的预报。
- 静态网页
通过 F12 调用开发者工具,找到未来七天天气预报的位置
向下打开,看到 ul 标签下有七个 li 标签,应该是对应七天的天气
不出所料,正是每天的天气情况。下面就开始写代码
import sys
import requests
from lxml import html
导入 requests 库和 html 库,sys 库用来接收要查询的城市名
观察上面的 url,查询不同的城市对应的后面的数字是不一样的,因此查询不同的城市只要修改对应的数字串就可以了
def get_content(code='101091101'):url = 'http://www.weather.com.cn/weather/%s.shtml' % codereturn requests.get(url).content
获取申请访问的内容
# 获取温度
def get_tem(top, index):tem_low = top.xpath('li[%d]/p[@class="tem"]/i/text()' % index)[0]if len(top.xpath('li[%d]/p[@class="tem"]/span' % index)) != 0:tem_high = top.xpath('li[%d]/p[@class="tem"]/span/text()' % index)[0] + '℃'return tem_low + ' ~' + tem_highelse:return tem_low
后来我发现到了晚上就没有最高温度和最低温度了,只有当前温度,因此写个函数处理一下温度的获取。当有两个温度的时候,输出最低温度到最高温度,只有当前温度时输出当前温度。
生活指数的结构在这里
然后就开始编写代码获取生活建议
# 生活指数
def shzs():l = []for i in sel.xpath('//ul[@class="clearfix"]'):# 防晒指数span_intension = i.xpath('li[1]/span/text()')[0]span_product = i.xpath('li[1]/p/text()')[0]if len(span_intension) == 1:span = '紫外线指数:' + span_intension + ' '+ span_productelse:span = '紫外线指数:' + span_intension + ' '+ span_product# 穿衣指数 dress_intension = i.xpath('li[4]/a/span/text()')[0]dress_sug = i.xpath('li[4]/a/p/text()')[0]if len(dress_intension) == 2:dress = '穿衣指数:' + dress_intension + ' ' + dress_sugelse:dress = '穿衣指数:' + dress_intension + ' ' + dress_sug# 空气指数air_condition = i.xpath('li[6]/span/text()')[0]air = '空气指数:' + air_conditiont = (span, dress, air)l.append(t)return l
用 tuple 存储三个指数,用 list 存储七天的生活指数
# 预测未来几天的天气和生活指数
def predict_days(days):for i in range(1, days+1):# 日期date = top.xpath('li[%d]/h1/text()' % i)[0]# 天气weather = top.xpath('li[%d]/p[@class="wea"]/text()' % i)[0]# 温度tem = get_tem(top, i)# 风力wind = top.xpath('li[%d]/p[@class="win"]/i/text()' % i)[0]print("日期:%s\n天气:%s\n温度:%s\n风力:%s" % (date, weather, tem, wind))life_condition = shzs() for index in range(3):print(life_condition[i-1][index])print('==============================================')
传入预测的天数,输出天气情况和生活指数
if __name__ == "__main__":city = {"秦皇岛":'101091101',"淄川":'101120302',"北京":'101010100'}if len(sys.argv) == 2:city_code = city[sys.argv[1]]content = get_content(city_code)else:content = get_content()sel = html.fromstring(content)top = sel.xpath('//ul[@class="t clearfix"]')[0] # 忘记写 [0] top 类型为listsuggestions = sel.xpath('//ul[@class="clearfix"]')[0]predict_days(7)
想要查询别的城市的天气,只需要在 city 里添加对应的城市名和代码即可
python weather_predict.py 北京
即可查询北京七天的天气情况
完整代码
利用 Python 得到未来七天天气预报相关推荐
- 利用python爬取天气预报_python实现天气爬虫——利用xpath爬取七天天气预报数据...
python实现天气爬虫--利用xpath爬取七天天气预报数据 import pandas as pd import lxml import requests import csv from lxml ...
- Python爬虫西安七天天气预报
刚刚学习了正则表达式,所以准备试着写一个爬虫,作为练习~~ 首先,在网页搜索西安七天天气预报,点开页面.我找到的网页如下图: 此时,我们按Fn+F12,获取爬虫需要的url 获取到相应的url后,便可 ...
- Echarts实践:实现一个未来七天天气预报,图表轮播效果及插入svg或img图标
七天效果图 轮播效果图 轮播效果实现 <el-button class="button" icon="el-icon-arrow-left" @click ...
- 利用python实现逢七拍腿小游戏
#python day02 逢七拍腿游戏 几个小朋友在一起玩逢七拍腿的游戏,从1开始数数,当数到7的倍数或者尾号是7时,拍一下腿.现在从1数到99,假设每个人都没有错,计算一下共要拍腿几次? 第一种实 ...
- 利用python预测未来疫情数据进行预测_根据数据预测/推断未来数据
我对Python很陌生.我有一个数据集,我正在尝试使用numPy/sciPy来预测/推断未来的数据点.有没有一种简单的方法可以得到一个适合我当前数据的数学函数(比如正弦函数),然后我可以把新的值传递给 ...
- Android 天气APP(十一)未来七天的天气预报、逐小时预报、UI优化
上一篇:Android 天气APP(十)下拉刷新页面天气数据 逐小时天气预报.UI优化 新版------------------- 一.UI优化 二.逐小时天气预报 ① 添加逐小时天气API ② 使用 ...
- Echarts利用多X轴实现七天天气预报效果
Echarts利用多X轴实现七天天气预报效果 UI设计图 Echarts示例效果 前言 示例代码 最终效果 UI设计图 Echarts示例效果 前言 对于UI给出的设计图,各个气象网站都有类似的效果, ...
- Python爬虫获取最近七天天气预报信息
主要用到python的requests库和BeatifulSoup库,代码如下: #encoding:utf-8 import requests import psycopg2 import date ...
- 怎样利用Python开发天气预报软件,这份教程查收一下
今天要分享的是怎样利用Python开发天气预报软件,那话不多说,马上开始-- 1.首先建一个文件weather.py 2.创建窗口与显示窗口 3.为窗口设置标题与大小,保存运行如下图: 4.接下来创建 ...
最新文章
- Azure 服务管理 Cmdlet(1)
- 保存课程图片-服务端开发
- Linux Ubuntu 修改Grub,添加删除启动项,初步辨析Grub文件。
- 【Hankson 的趣味题】
- Linux cJSON库的使用、编译为cJSON动态库
- linux c 内存elf,gcc加入linux ELF有什么功能?
- c 服务器二次验证码,V5验证官网 - 基础套餐免费 -滑块验证,行为验证,防刷验证 - 文档...
- hsf 架构_HSF源码剖析 - 汪兴的个人空间 - OSCHINA - 中文开源技术交流社区
- 漏洞 立即留言_漏洞挖掘小白入坑指南
- MyDAL - is null is not null 条件 使用
- 机器学习——第一回视频总结
- 国瀚实业理财计划股票理财:刚参加工作的年轻人如何理财
- .NET Core之EF Core
- Windows下访问Ubuntu虚拟机中的Samba服务器遇到“\\192.168.71.128无法访问,您可能没有权限访问网络资源。请与这台服务器的管理员联系以查明您是否有访问权”的问题
- 【Wwise】一篇文看懂WwiseUnity热更
- python使用win32后台鼠标点击梦幻西游(只用于开学习技术)新手学习
- “华为杯”研究生数学建模竞赛2020年-【华为杯】C题:面向康复工程的脑电信号分析和判别模型(附优秀论文)
- 高仿蓝奏云盘下载页面源码
- MySQL经典四表查询(教师,学生,成绩,课程表)多表查询
- 全国与各省的2020年ESA10米土地利用镶嵌数据