我有一个可以解析温度,露点,高度计等的基本脚本。但是,我如何解析像天空一样的条件字符串?我想解析数据并打印出来:“Sky Condition:很少在2000英尺AGL”。例如。
import xml.etree.ElementTree as ET
from urllib import urlopen
link = urlopen('http://weather.aero/dataserver_current/httpparam?dataSource=metars& requestType=retrieve&format=xml&stationString=KSFO&hoursBeforeNow=1')
tree = ET.parse(link)
root = tree.getroot()
data = root.findall('data/METAR')
for metar in data:
print metar.find('temp_c').text
答案 0 :(得分:2)
您要检索的页面具有以下结构:
<METAR>
<!-- snip -->
<sky_condition sky_cover="FEW" cloud_base_ft_agl="2000"/>
<sky_condition sky_cover="BKN" cloud_base_ft_agl="18000"/>
</METAR>
所以你要问的是如何提取XML属性。 The xml.etree.ElementTree docs表示这些存储在名为attrib
的字典中。所以你的代码看起来像这样:
data = root.findall('data/METAR')
for sky in data.findall('sky_condition'):
print "Sky Condition: {0} at {1} ft AGL".format(
sky.attrib['sky_cover'],
sky.attrib['cloud_base_ft_agl']
)