Python3XML如何获取雅虎天气-创新互联
这篇文章将为大家详细讲解有关Python3 XML如何获取雅虎天气,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

实现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如何获取雅虎天气”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站名称:Python3XML如何获取雅虎天气-创新互联
本文链接:http://www.scyingshan.cn/article/dppici.html


咨询
建站咨询
