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的内存泄漏及gc模块的使用分析
Jul 16 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
Python使用asyncio包处理并发详解
Sep 09 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
python numpy 显示图像阵列的实例
Jul 02 Python
NLTK 3.2.4 环境搭建教程
Sep 19 Python
python对html过滤处理的方法
Oct 21 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
Python读写文件基础知识点
Jun 10 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
Django之腾讯云短信的实现
Jun 12 Python
聊聊Python String型列表求最值的问题
Jan 18 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/11/19 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
python使用urllib2提交http post请求的方法
2015/05/26 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
详解python中的线程与线程池
2019/05/10 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
python中reload重载实例用法
2020/12/15 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
档案管理员岗位职责
2013/12/01 职场文书
公司保密承诺书
2014/03/27 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
解除合同协议书
2014/04/17 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书