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脚本
Sep 01 Python
Python函数中的函数(闭包)用法实例
Mar 15 Python
深入理解Python变量与常量
Jun 02 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
python操作MySQL 模拟简单银行转账操作
Sep 27 Python
python中import reload __import__的区别详解
Oct 16 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
Apr 07 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
Python selenium模块实现定位过程解析
Jul 09 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 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
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
PHP aes (ecb)解密后乱码问题
2015/06/22 PHP
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
python中urllib模块用法实例详解
2014/11/19 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
Python批量查询域名是否被注册过
2017/06/21 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Python定义一个函数的方法
2020/06/15 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
公司JAVA开发面试题
2015/04/02 面试题
便利店的创业计划书
2014/01/15 职场文书
求职信需要的五点内容
2014/02/01 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
搞笑结婚保证书
2015/05/08 职场文书
小学远程教育工作总结
2015/08/13 职场文书