zoukankan      html  css  js  c++  java
  • python解析Yahoo的XML格式的天气预报,获取当天和近期几天的天气:

    下面是接口xml格式数据:

    <rss xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">
    
    <channel>
    
    <title>Yahoo! Weather - Beijing, CN</title>
    
    <link>
    
    http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CN/*http://weather.yahoo.com/forecast/CHXX0008_c.html
    
    </link>
    
    <description>Yahoo! Weather for Beijing, CN</description>
    
    <language>en-us</language>
    
    <lastBuildDate>Mon, 06 Oct 2014 5:00 pm CST</lastBuildDate>
    
    <ttl>60</ttl>
    
    <yweather:location city="Beijing" region="" country="China"/>
    
    <yweather:units temperature="C" distance="km" pressure="mb" speed="km/h"/>
    
    <yweather:wind chill="20" direction="200" speed="6.44"/>
    
    <yweather:atmosphere humidity="34" visibility="" pressure="1020.9" rising="0"/>
    
    <yweather:astronomy sunrise="6:14 am" sunset="5:49 pm"/>
    
    <image>
    
    <title>Yahoo! Weather</title>
    
    <width>142</width>
    
    <height>18</height>
    
    <link>http://weather.yahoo.com</link>
    
    <url>
    
    http://l.yimg.com/a/i/brand/purplelogo//uh/us/news-wea.gif
    
    </url>
    
    </image>
    
    <item>
    
    <title>Conditions for Beijing, CN at 5:00 pm CST</title>
    
    <geo:lat>39.91</geo:lat>
    
    <geo:long>116.39</geo:long>
    
    <link>
    
    http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CN/*http://weather.yahoo.com/forecast/CHXX0008_c.html
    
    </link>
    
    <pubDate>Mon, 06 Oct 2014 5:00 pm CST</pubDate>
    
    <yweather:condition text="Sunny" code="32" temp="20" date="Mon, 06 Oct 2014 5:00 pm CST"/>
    
    <description>
    
    <![CDATA[
    
    <img src="http://l.yimg.com/a/i/us/we/52/32.gif"/><br /> <b>Current Conditions:</b><br /> Sunny, 20 C<BR /> <BR /><b>Forecast:</b><BR /> Mon - Clear. High: 19 Low: 9<br /> Tue - Sunny. High: 22 Low: 10<br /> Wed - Sunny. High: 24 Low: 12<br /> Thu - Sunny. High: 25 Low: 13<br /> Fri - Partly Cloudy. High: 24 Low: 13<br /> <br /> <a href="http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CN/*http://weather.yahoo.com/forecast/CHXX0008_c.html">Full Forecast at Yahoo! Weather</a><BR/><BR/> (provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/>
    
    ]]>
    
    </description>
    
    <yweather:forecast day="Mon" date="6 Oct 2014" low="9" high="19" text="Clear" code="31"/>
    
    <yweather:forecast day="Tue" date="7 Oct 2014" low="10" high="22" text="Sunny" code="32"/>
    
    <yweather:forecast day="Wed" date="8 Oct 2014" low="12" high="24" text="Sunny" code="32"/>
    
    <yweather:forecast day="Thu" date="9 Oct 2014" low="13" high="25" text="Sunny" code="32"/>
    
    <yweather:forecast day="Fri" date="10 Oct 2014" low="13" high="24" text="Partly Cloudy" code="30"/>
    
    <guid isPermaLink="false">CHXX0008_2014_10_10_7_00_CST</guid>
    
    </item>
    
    </channel>
    
    </rss>
    
    <!--
    
     fan1587.sports.bf1.yahoo.com Mon Oct  6 03:36:02 PDT 2014 
    
    -->

    Yahoo的XML格式的天气预报,获取当天和近期几天的天气:

    開始解析:

    #-*-coding:UTF-8-*-
    
    import xml.etree.ElementTree as etree
    
    weatherxml = etree.parse('yahooweather.xml')
    
    tree = weatherxml.getroot()
    
    for root in tree:
    
          
    
      #  print root  #channel 直接的一级子元素   
    
        pindao =  tree.findall('channel') 
    
        des = pindao[0].find('title')
    
        
    
        print des.text
    
        for elem in tree.iter(tag='pubDate'):    #iter() 深度优先搜素遍历
    
           print elem.text
    
        
    
        for elem in tree.iter(tag='{http://xml.weather.yahoo.com/ns/rss/1.0}condition'):
    
           print elem.attrib
    
        
    
        for elem in tree.iter(tag='{http://xml.weather.yahoo.com/ns/rss/1.0}forecast'):
    
           print elem.attrib

    yweather:condition

    yweather:forecast    

    冒号前表示命名空间        通过xml文件能够知道yweather=http://xml.weather.yahoo.com/ns/rss/1.0

    结果:

    QQ截图20141007150910

  • 相关阅读:
    AdvStringGrid 复选框、goRowSelect
    AdvStringGrid 列宽度、列移动、行高度、自动调节
    AdvStringGrid 滚动条问题
    AdvStringGrid 标题头
    常量的 访问限制
    我自己的方法、组件、属性、变量、常量、数据库常用操作命名方法。
    泛型 for to/in 遍历 PK 效率;TEnumerator、TEnumerable
    Hadoop关键任务Job资源隔离方案
    Hadoop动态调整Map Task内存资源大小
    Hadoop动态调整Map Task内存资源大小
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4279023.html
Copyright © 2011-2022 走看看