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算法学习之计数排序实例
Dec 18 Python
python字符串对其居中显示的方法
Jul 11 Python
Python WXPY实现微信监控报警功能的代码
Oct 20 Python
Django csrf 验证问题的实现
Oct 09 Python
Python玩转加密的技巧【推荐】
May 13 Python
简单了解python PEP的一些知识
Jul 13 Python
利用Python复制文件的9种方法总结
Sep 02 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
Python 列表中的修改、添加和删除元素的实现
Jun 11 Python
浅谈python锁与死锁问题
Aug 14 Python
python3中数组逆序输出方法
Dec 01 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 更新数据库中断的解决方法
2009/06/05 PHP
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
php实现倒计时效果
2015/12/19 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
jquery插件之easing使用
2010/08/19 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
loading动画特效小结
2017/01/22 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
angularJS开发注意事项
2018/05/26 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
详解Python编程中基本的数学计算使用
2016/02/04 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
为什么要用EJB
2014/04/17 面试题
建筑安全标语
2014/06/07 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
工作简历自我评价
2015/03/11 职场文书
六一活动主持词
2015/06/30 职场文书
如何写好竞聘报告
2019/04/03 职场文书
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android