Python FeedParser с Yahoo погоды RSS - PullRequest
1 голос
/ 20 мая 2010

Я пытаюсь использовать feedparser для получения некоторых данных от yahoos weather rss. Похоже, что анализатор каналов удаляет данные из пространства имен yweather:

http://weather.yahooapis.com/forecastrss?w=24260013&u=c

<yweather:condition  text="Fair" code="34"  temp="23"  date="Wed, 19 May 2010 5:55 pm EDT" />

похоже, что feedparser полностью игнорирует это. есть ли, чтобы получить это?

Ответы [ 2 ]

0 голосов
/ 19 июля 2011

Для полноты, feedparser поддерживает и это. Общий синтаксис - имя тега подчеркивания префикса пространства имен (например, yweather_condition).

В приведенном примере погоды Yahoo можно сделать:

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

выходы

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

Документация на http://www.feedparser.org/docs/namespace-handling.html

0 голосов
/ 20 мая 2010

Вот один из способов получить данные, используя 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')]

Раздел , использующий xpath с пространствами имен , может быть особенно полезен.

...