首页 > 编程 > Python > 正文

Python3 XML 获取雅虎天气的实现方法

2020-01-04 16:00:05
字体:
来源:转载
供稿:网友

参考廖雪峰的Python教程,实现Linux Python3获取雅虎天气

#!/usr/bin/env python3# coding: utf-8import osfrom datetime import datetimefrom 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 weatherdef 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 获取雅虎天气的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表