2016-08-14 6 views
0

Может быть, не странно, но я никогда не использовал xml или PHP, что является двумя из того, что я использую для предстоящего проекта.Parsing strange xml feeds

В любом случае, я разобрал this XML-канал. Каждый <item> содержит <enclosure url=...>

Где ... = URLs & типов изображений и т.д.

В Python 3 с помощью feedparser я могу использовать

feed = feedparser.parse("http://www.huffingtonpost.com/feeds/verticals/good-news/index.xml") 
l = feed.entries[12]['title']` 

просто отлично, но когда я пытаюсь получить URL изображения с использованием

p = feed.entries[12]['enclosure']

Я получаю сообщение об ошибке

Traceback (most recent call last): 
    File "<pyshell#28>", line 1, in <module> 
    p = feed.entries[12]['enclosure'] 
    File "C:\Python34\lib\site-packages\feedparser-5.1.3-py3.4.egg\feedparser.py", line 375, in __getitem__ 
    return dict.__getitem__(self, key) 
KeyError: 'enclosure' 

Так, очевидно enclosure не возвращается ни с чем, я подозреваю, что это происходит потому, что в XML он не использует

<name of object>Text</name of object> 

Вместо этого он использует

<enclosure url=... blah blah blah /> 

Как получить значение URL-адреса? Она равна строке (url="url is here")

ответ

0

Глядя на feedparse docs попробуйте использовать записи [я] .enclosures [J] .href ссылки, который возвращает URL связанного файла:

feed = feedparser.parse("http://www.huffingtonpost.com/feeds/verticals/good-news/index.xml") 

l = feed.entries[12].enclosures[1].href