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 域名分析工具实现代码
Jul 15 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
不要用强制方法杀掉python线程
Feb 26 Python
Python中模块与包有相同名字的处理方法
May 05 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
python tkinter图形界面代码统计工具
Sep 18 Python
在notepad++中实现直接运行python代码
Dec 18 Python
Python脚本去除文件的只读性操作
Mar 05 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
pycharm 2020 1.1的安装流程
Sep 29 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将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
Python中的index()方法使用教程
2015/05/18 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
详解python polyscope库的安装和例程
2020/11/13 Python
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
外语系毕业生求职自荐信
2014/04/12 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
品酒会策划方案
2014/05/26 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
七一建党日演讲稿
2014/09/05 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript