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 13 Python
Python之os操作方法(详解)
Jun 15 Python
Python快速排序算法实例分析
Nov 29 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
python 读取目录下csv文件并绘制曲线v111的方法
Jul 06 Python
python PrettyTable模块的安装与简单应用
Jan 11 Python
python中的列表与元组的使用
Aug 08 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
Python实现CAN报文转换工具教程
May 05 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
php开启openssl的方法
2014/05/15 PHP
PHP防盗链代码实例
2014/08/27 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
PHP简单日历实现方法
2016/07/20 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
JavaScript中switch语句的用法详解
2015/06/03 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
Python操作Word批量生成文章的方法
2015/07/28 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
python实现多进程代码示例
2018/10/31 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
python中列表的含义及用法
2020/05/26 Python
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
团队口号大全
2014/06/06 职场文书
领导参观欢迎词
2015/01/26 职场文书
特此通知格式
2015/04/27 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
Python制作动态字符画的源码
2021/08/04 Python
MySQL基于索引的压力测试的实现
2021/11/07 MySQL