Python3 XML 获取雅虎天气的实现方法


Posted in Python onFebruary 01, 2018

参考廖雪峰的Python教程,实现Linux Python3获取雅虎天气

#!/usr/bin/env python3
# coding: utf-8
import os
from datetime import datetime
from urllib import request 
from xml.parsers.expat import ParserCreate 
file_name = "weather.txt"
for root, dirs, files in os.walk("."):
 if file_name in files:
  os.remove(os.path.join(root, file_name))
def yahoo_weather(data):
 flag = False
 weather = {"city": "", "pubdate": "", "forecast": []}
 def start_element(name, attrs):
  if name == "yweather:location":
   weather["city"] = weather["city"] + attrs["city"]
   weather["city"] = weather["city"] + " " + attrs["country"]
  if name == "yweather:forecast":
   forecast = {}
   forecast["date"] = attrs["date"]
   forecast["day"] = attrs["day"]
   forecast["high"] = attrs["high"]
   forecast["low"] = attrs["low"]
   forecast["text"] = attrs["text"]
   weather["forecast"].append(forecast)
  if name == "pubDate":
   nonlocal flag
   flag = True
  
 def char_data(text):
  nonlocal flag
  if flag:
   weather["pubdate"] = text
   flag = False
 parser = ParserCreate()
 parser.StartElementHandler = start_element
 parser.CharacterDataHandler = char_data
 parser.Parse(data)
 return weather
def print_weather(weather):
 with open(file_name, "a") as f:
  s = "City: %s\nPub date: %s" %(weather["city"], weather["pubdate"])
  print("%s" %(weather["city"]))
  f.write(s + "\n")
  for forecast in weather["forecast"]:
   date = datetime.strptime(forecast["date"], "%d %b %Y").strftime("%Y-%m-%d")
   s = "Date: %s High: %s Low: %s Weather: %s" %(date, forecast["high"], forecast["low"], forecast["text"])
   f.write(s + "\n")
  f.write("\n")
citys = ["2151330", "2151849", "44418", "615702", "2514815"]
for city in citys:
 url = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%20"
 url = url + city
 url = url + "&format=xml"
 with request.urlopen(url, timeout=4) as f:
  weather = yahoo_weather(f.read())
  print_weather(weather)
print("weather conditions has written to %s" %(file_name))

以上这篇Python3 XML 获取雅虎天气的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 深入理解yield
Sep 06 Python
Python贪吃蛇游戏编写代码
Oct 26 Python
Python列表删除的三种方法代码分享
Oct 31 Python
使用Python从零开始撸一个区块链
Mar 14 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
Python中super函数用法实例分析
Mar 18 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
python实现广度优先搜索过程解析
Oct 19 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
np.dot()函数的用法详解
Jan 17 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
Python命令行解析模块详解
Feb 01 #Python
python2.7到3.x迁移指南
Feb 01 #Python
Python Paramiko模块的使用实际案例
Feb 01 #Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 #Python
python使用tensorflow保存、加载和使用模型的方法
Jan 31 #Python
python通过elixir包操作mysql数据库实例代码
Jan 31 #Python
Django视图和URL配置详解
Jan 31 #Python
You might like
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
js实现批量删除功能
2020/08/27 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
Python实现购物系统(示例讲解)
2017/09/13 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
python虚拟环境完美部署教程
2019/08/06 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
详解django中Template语言
2020/02/22 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
厂长助理岗位职责
2013/12/27 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
企业标语口号
2014/06/10 职场文书
员工安全生产责任书
2014/07/22 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python