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采集博客中上传的QQ截图文件
Jul 18 Python
python中lambda与def用法对比实例分析
Apr 30 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
python 3.6.4 安装配置方法图文教程
Sep 18 Python
python开启debug模式的方法
Jun 27 Python
python实现按行分割文件
Jul 22 Python
python 3.7.4 安装 opencv的教程
Oct 10 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 Python
使用Python构造hive insert语句说明
Jun 06 Python
Python虚拟环境库virtualenvwrapper安装及使用
Jun 17 Python
keras的三种模型实现与区别说明
Jul 03 Python
python 实现百度网盘非会员上传超过500个文件的方法
Jan 07 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调用JAVA的WebService简单实例
2014/03/11 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
python使用requests.session模拟登录
2019/08/09 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
python中time、datetime模块的使用
2020/12/14 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
.NET面试问题集
2015/12/08 面试题
不打扫卫生检讨书
2014/02/12 职场文书
高校教师岗位职责
2014/03/18 职场文书
安全宣传标语口号
2014/06/06 职场文书
工地宣传标语
2014/06/18 职场文书
个性发展自我评价2015
2015/03/09 职场文书
2015年安全月活动总结
2015/03/26 职场文书