2010-05-20 7 views

Répondre

0

Voici une façon que vous pouvez obtenir les données à l'aide à l'aide lxml:

import urllib2 
import lxml.etree 

url = "http://weather.yahooapis.com/forecastrss?w=24260013&u=c" 
doc = lxml.etree.parse(urllib2.urlopen(url)).getroot() 
conditions = doc.xpath('*/*/yweather:condition', 
         namespaces={'yweather': 'http://xml.weather.yahoo.com/ns/rss/1.0'}) 
try: 
    condition=conditions[0] 
except IndexError: 
    print('yweather:condition not found') 
print(condition.items()) 
# [('text', 'Fair'), ('code', '33'), ('temp', '16'), ('date', 'Wed, 19 May 2010 9:55 pm EDT')] 

La section sur using xpath with namespaces pourrait être particulièrement utile.

0

Par souci d'exhaustivité, le feedparser soutient également cela. La syntaxe générale est le nom de balise de soulignement du préfixe d'espace de noms (par exemple, yweather_condition).

Dans l'exemple météo Yahoo donné, on peut faire:

import feedparser 
d=feedparser.parse('http://weather.yahooapis.com/forecastrss?w=24260013&u=c') 
print (d['items'][0]['yweather_condition']) 

cède

{'date': u'Mon, 18 Jul 2011 7:53 pm EDT', 'text': u'Fair', 'code': u'34', 'temp': u'27'} 

La documentation est à http://www.feedparser.org/docs/namespace-handling.html