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用来获得图片exif信息的库实例分析
Mar 16 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
分析经典Python开发工程师面试题
Apr 08 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
基于python的列表list和集合set操作
Nov 24 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
Python闭包及装饰器运行原理解析
Jun 17 Python
Python基于pyjnius库实现访问java类
Jul 31 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
python如何做代码性能分析
Apr 26 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 操作调试的方法
2012/07/12 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
setTimeout学习小结
2017/02/08 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
制定岗位职责的原则
2013/11/08 职场文书
六十岁生日答谢词
2014/01/10 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
预备党员群众意见
2015/06/01 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python