因为自己平时都不看手机上的天气 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 得到未来七天天气预报相关推荐

  1. 利用python爬取天气预报_python实现天气爬虫——利用xpath爬取七天天气预报数据...

    python实现天气爬虫--利用xpath爬取七天天气预报数据 import pandas as pd import lxml import requests import csv from lxml ...

  2. Python爬虫西安七天天气预报

    刚刚学习了正则表达式,所以准备试着写一个爬虫,作为练习~~ 首先,在网页搜索西安七天天气预报,点开页面.我找到的网页如下图: 此时,我们按Fn+F12,获取爬虫需要的url 获取到相应的url后,便可 ...

  3. Echarts实践:实现一个未来七天天气预报,图表轮播效果及插入svg或img图标

    七天效果图 轮播效果图 轮播效果实现 <el-button class="button" icon="el-icon-arrow-left" @click ...

  4. 利用python实现逢七拍腿小游戏

    #python day02 逢七拍腿游戏 几个小朋友在一起玩逢七拍腿的游戏,从1开始数数,当数到7的倍数或者尾号是7时,拍一下腿.现在从1数到99,假设每个人都没有错,计算一下共要拍腿几次? 第一种实 ...

  5. 利用python预测未来疫情数据进行预测_根据数据预测/推断未来数据

    我对Python很陌生.我有一个数据集,我正在尝试使用numPy/sciPy来预测/推断未来的数据点.有没有一种简单的方法可以得到一个适合我当前数据的数学函数(比如正弦函数),然后我可以把新的值传递给 ...

  6. Android 天气APP(十一)未来七天的天气预报、逐小时预报、UI优化

    上一篇:Android 天气APP(十)下拉刷新页面天气数据 逐小时天气预报.UI优化 新版------------------- 一.UI优化 二.逐小时天气预报 ① 添加逐小时天气API ② 使用 ...

  7. Echarts利用多X轴实现七天天气预报效果

    Echarts利用多X轴实现七天天气预报效果 UI设计图 Echarts示例效果 前言 示例代码 最终效果 UI设计图 Echarts示例效果 前言 对于UI给出的设计图,各个气象网站都有类似的效果, ...

  8. Python爬虫获取最近七天天气预报信息

    主要用到python的requests库和BeatifulSoup库,代码如下: #encoding:utf-8 import requests import psycopg2 import date ...

  9. 怎样利用Python开发天气预报软件,这份教程查收一下

    今天要分享的是怎样利用Python开发天气预报软件,那话不多说,马上开始-- 1.首先建一个文件weather.py 2.创建窗口与显示窗口 3.为窗口设置标题与大小,保存运行如下图: 4.接下来创建 ...

最新文章

  1. Azure 服务管理 Cmdlet(1)
  2. 保存课程图片-服务端开发
  3. Linux Ubuntu 修改Grub,添加删除启动项,初步辨析Grub文件。
  4. 【Hankson 的趣味题】
  5. Linux cJSON库的使用、编译为cJSON动态库
  6. linux c 内存elf,gcc加入linux ELF有什么功能?
  7. c 服务器二次验证码,V5验证官网 - 基础套餐免费 -滑块验证,行为验证,防刷验证 - 文档...
  8. hsf 架构_HSF源码剖析 - 汪兴的个人空间 - OSCHINA - 中文开源技术交流社区
  9. 漏洞 立即留言_漏洞挖掘小白入坑指南
  10. MyDAL - is null is not null 条件 使用
  11. 机器学习——第一回视频总结
  12. 国瀚实业理财计划股票理财:刚参加工作的年轻人如何理财
  13. .NET Core之EF Core
  14. Windows下访问Ubuntu虚拟机中的Samba服务器遇到“\\192.168.71.128无法访问,您可能没有权限访问网络资源。请与这台服务器的管理员联系以查明您是否有访问权”的问题
  15. 【Wwise】一篇文看懂WwiseUnity热更
  16. python使用win32后台鼠标点击梦幻西游(只用于开学习技术)新手学习
  17. “华为杯”研究生数学建模竞赛2020年-【华为杯】C题:面向康复工程的脑电信号分析和判别模型(附优秀论文)
  18. 高仿蓝奏云盘下载页面源码
  19. MySQL经典四表查询(教师,学生,成绩,课程表)多表查询
  20. 全国与各省的2020年ESA10米土地利用镶嵌数据

热门文章

  1. 【时间序列】时间序列中如何进行交叉验证
  2. java se +mysql——基于控制台实现简易餐厅管理系统
  3. 面向对象:想和你一起看晴空万里,想和你一起走遍东西南北,往后余生等着你...
  4. 【Matlab】向量中元素的查找
  5. 完整版Linux驱动命令安装
  6. 谨以此文纪念自己那曾经的魔兽岁月
  7. 【教程】40G MTP-LC光纤配线架实现4x10G LC布线
  8. 在线视频转gif的网站
  9. 购物车 mongoDB
  10. 刘鹏教授在2018高校人工智能实验室建设论坛作报告