做了一个查询天气的小脚本,使用的是中华万年历的天气API接口:url = r'http://wthrcdn.etouch.cn/weather_mini?citykey=101280101

首先是导入城市数据,根据输入的城市名称,查到city_code,这里我从网上找了个城市代码的文件。

用pickle导入,然后找出对应的code。

 1 # coding=utf-8
 2 import requests
 3 import json
 4 import pickle
 5
 6 #获取城市代码
 7 f = open('city_data.pkl', 'rb')
 8 city_file = pickle.load(f)
 9 f.close()
10 city_name = input('请输入想要查询的城市:')
11 city_code = city_file[city_name]

获得city_code后,将code传入url,使用requests.get得到数据。然后使用json.loads()解码。

我也是今天刚刚接触requests模块,这里给出requests的官方文档

1 #利用城市名称查询天气
2 url = r'http://wthrcdn.etouch.cn/weather_mini?citykey=%s' %city_code
3 jsonStr = requests.get(url).text
4
5 data = json.loads(jsonStr)
6 #print(data)
7 weather = data['data']

这样就得到了天气数据,data是这样子的:

{'data': {'yesterday': {'date': '14日星期日', 'high': '高温 20℃', 'fx': '无持续风向', 'low': '低温 9℃', 'fl': '<![CDATA[<3级]]>', 'type': '多云'}, 'city': '广州', 'aqi': '91', 'forecast': [{'date': '15日星期一', 'high': '高温 20℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 9℃', 'fengxiang': '无持续风向', 'type': '多云'}, {'date': '16日星期二', 'high': '高温 21℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 10℃', 'fengxiang': '无持续风向', 'type': '晴'}, {'date': '17日星期三', 'high': '高温 22℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 11℃', 'fengxiang': '无持续风向', 'type': '晴'}, {'date': '18日星期四', 'high': '高温 23℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 13℃', 'fengxiang': '无持续风向', 'type': '多云'}, {'date': '19日星期五', 'high': '高温 24℃', 'fengli': '<![CDATA[<3级]]>', 'low': '低温 15℃', 'fengxiang': '无持续风向', 'type': '多云'}], 'ganmao': '昼夜温差较大,较易发生感冒,请适当增减衣服。体质较弱的朋友请注意防护。', 'wendu': '7'}, 'status': 1000, 'desc': 'OK'}

剩下来的就是将这个字典里的各项数据取出来打印了。

1 #打印各项数据
2 print('城市:',weather['city'])
3 print('当前温度',weather['wendu'] + '℃')
4 print('提示',weather['ganmao'])
5
6 for x in weather['forecast']:
7     print(x['date'],x['type'],x['high'],x['low'],x['fengxiang'])

整个运行下,得到的结果就是:

完成。其实里面还有一项数据我没有打印出来,风力,因为在返回的data中是这个样子的

'fengli': '<![CDATA[<3级]]>',他的Value值是'<![CDATA[<3级]]>'。。。这个我还没想好要怎么处理。。。

在完成了这个后,才又发现,原来这个接口可以改下,直接传入城市名也是可以的。。。

url = r'http://wthrcdn.etouch.cn/weather_mini?city=city_name

这样,也就不需要再去open城市数据,找到对应的城市代码了。。。更简单了。

但是,一些异常的处理我还没有加入。如:当输入的城市错误或者不存在的时候,要给用户对应的提示。

但是作为初次尝试使用requests模块,当看到输出结果时,还是蛮开心的。

转载于:https://www.cnblogs.com/fqxtony/p/8285366.html

Python学习笔记(六)——查询天气脚本相关推荐

  1. Python学习笔记六——画小猪佩奇

    目录 Python学习笔记六--画小猪佩奇 画布 画笔 属性设置 操纵命令 运动命令 画笔控制命令 全局控制命令 其他命令 Python学习笔记六--画小猪佩奇 使用Python的turtle库可以绘 ...

  2. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  3. Python学习笔记(六)

    1. IO编程 1.1 文件读写 1.2 StringIO和BytesIO 1.3 操作文件和目录 1.4 序列化 2. 进程和线程 2.1 多进程 2.2 多线程 2.3 ThreadLocal 2 ...

  4. python学习笔记六 初识面向对象上(基础篇)

    python面向对象 面向对象编程(Object-Oriented Programming )介绍 对于编程语言的初学者来讲,OOP不是一个很容易理解的编程方式,虽然大家都知道OOP的三大特性是继承. ...

  5. 【懒懒的Python学习笔记六】

    大多数程序旨在最终解决用户问题,为此通常需要从用户那里输入信息,在本章学习中,我们将学习Python的raw_input()函数接受用户输入以及学习while循环来控制程序的运行. 函数raw_inp ...

  6. Python学习笔记六(Python time模块)

    通过python time模块提供的函数和方法可以获取与时间相关的操作,例如:获取系统时间,统计程序执行时间,WEB程序的响应时间等. 1)time.time(),该函数返回从1970年1月1日0点0 ...

  7. Python学习笔记(六)Python基础_数据类型——字符串

    文章目录 字符串 字符串输入 字符串拼接 字符串操作 字符串格式化 访问字符串中的值 字符串切片 字符串遍历 常用的字符串方法 字符串 字符串是 Python 中最常用的数据类型:一般以使用引号' ' ...

  8. python学习笔记六:Series

    Series是一种类似于一维数组的对象,由以下两部分组成: values:一组数据(ndarray或list类型) index:相关的数据索引标签 一维数组默认索引为0,1,2,3...,而Serie ...

  9. Python学习笔记(六)—几个标准类型内建函数

    比如说cmp(),str(),type(),repr()等等 cmp(a,b)比较a和b,根据比较的结果返回一个整数i. 当a<b时返回i<0;(即-1) 当a>b时返回i>0 ...

  10. Python学习笔记总结

    了解了python语言后,决定以后使用python来进行各项工作,因此一直想要深入学习python.千里之行始于足下,万事开头难. 由于最近在准备写毕业论文,陆陆续续学习了Python的语法知识. P ...

最新文章

  1. c/c++ ide clion安装编译器
  2. Kafka的producer案例,Kafka的consumer案例
  3. 如何为编程爱好者设计一款好玩的智能硬件(三)——该选什么样的MCU呢?
  4. ubuntu下安装最新 版jre 7
  5. HMM和Viterbi
  6. python股票接口_python获取股票数据接口
  7. 苹果iPad忘记了Apple ID密码该怎么办?(手机教程)
  8. Python画爱心树源码
  9. make[1]: *** Waiting for unfinished jobs....
  10. 长尾关键词排名优化技巧
  11. php菱形循环代码,PHP练习–用for循环打印空心菱形,for菱形_PHP教程
  12. 一个Python的迷宫小游戏
  13. HDU steps 1.2.6 Identity Card
  14. ug12对计算机配置要求,UG软件对电脑配置的最低要求有哪些
  15. bzoj3698 XWW的难题
  16. 北航2021届计组 - 支持中断的CPU
  17. QtVtk-009-Cone4
  18. BIGEMAP GIS Office介绍
  19. Kafka-Eagle 2.0.5安装
  20. PAT 乙级 1071 小赌怡情 (15分)

热门文章

  1. 为 DEV-C++ 生成 libmysql.a 的过程 及 windows下 devc++ c语言访问mysql数据库 环境配置...
  2. Predictably Irractional - 期望的效应
  3. 【Tensorlayer系列】深度强化学习之FrozenLake介绍及表格型Q学习求解
  4. 数字高程模型内插 opencv C++ CSU
  5. 【LeetCode】【字符串】题号:*537. 复数乘法
  6. 为numpy数组增加一个维度的方法
  7. ArcGIS 计算挖填方区域和挖填方量
  8. DCFEE: A Document-level Chinese Financial Event Extraction System based on Automatically Labeled Tra
  9. card如何添加复选框 vant_Vant Weapp小程序蹲坑之使用card组件显示价格
  10. Android自定义View【实战教程】2⃣️----自定义view那些事