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实现dict版图遍历示例
Feb 19 Python
python中lambda与def用法对比实例分析
Apr 30 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
Python中property属性实例解析
Feb 10 Python
Python中collections模块的基本使用教程
Dec 07 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
python编写俄罗斯方块
Mar 13 Python
Django nginx配置实现过程详解
Sep 10 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 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命令行使用方法和命令行参数说明
2014/04/08 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
javascript event 事件解析
2011/01/31 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
聊一聊Vue.js过渡效果
2016/09/07 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
python单链表实现代码实例
2013/11/21 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
python处理数据,存进hive表的方法
2018/07/04 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
联想法国官方网站:Lenovo法国
2018/10/18 全球购物
车工岗位职责
2013/11/26 职场文书
怎样写好自我鉴定
2013/12/04 职场文书
领导调研接待方案
2014/02/27 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
关于感谢信的范文
2015/01/23 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书