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 相关文章推荐
利用soaplib搭建webservice详细步骤和实例代码
Nov 20 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
Mar 31 Python
Python中is与==判断的区别
Mar 28 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
python 公共方法汇总解析
Sep 16 Python
pygame实现打字游戏
Feb 19 Python
wxPython色环电阻计算器
Nov 18 Python
python 使用shutil复制图片的例子
Dec 13 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
浅谈python出错时traceback的解读
Jul 15 Python
python 实现关联规则算法Apriori的示例
Sep 30 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表单转换textarea换行符的方法
2010/09/10 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
python从sqlite读取并显示数据的方法
2015/05/08 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
python虚拟环境完美部署教程
2019/08/06 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
python 循环数据赋值实例
2019/12/02 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
python画图常规设置方式
2020/03/05 Python
Django框架models使用group by详解
2020/03/11 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
伦敦一卡通:The London Pass
2018/11/30 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
文史专业毕业生自荐信
2013/11/17 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电