2017-10-11 3 views
0

Ich benutze feedparser, um in einem XML-Feed zu lesen, die gut funktioniert und ich kann alle Level-1-Attribute durchlaufen, aber ich kann nicht auf etwas zugreifen, das unter Level eins ist.Python 3.6: Feedparser Problem bekommen Sub-Attribute

Zum Beispiel kann ich keine Attribute aus links herausziehen.

Jede Hilfe sehr geschätzt.

-Code

import feedparser 

feed = feedparser.parse("https://dev.test.com/feed.xml") 

for post in feed.entries: 
    print(post.title) # Works 
    print(post.links.rel) # Doesn't work 
    print(post.links[0].rel # Doesn't work 

Ausgabe von Post Variable

{ 
    'title': 'test title of article' 
    , 'links': [ 
     { 
      'rel': 'alternate' 
      , 'type': 'text/html' 
      , 'href': 'http://dev.test.com/test-link' 
     } 
     , { 
      'length': '0' 
      , 'type': 'image/jpeg' 
      , 'href': 'http://dev.test.com/test-link.jpg' 
      , 'rel': 'enclosure' 
     } 
    ] 
    , 'link': 'http://dev.test.com/test-link' 
    , 'published': 'Tue, 10 Oct 2017 19:21:00 +0100' 
} 
+0

Können Sie die Zeile einschließen, in der Sie das Feedparser-Modul/die Klasse importieren? – slackmart

+0

@SlackMart, fügte es dort hinzu. – llanato

+0

Ein Beispiel Feed wäre nett. Und welche Version von Feedparser und Python benutzt du? – uphill

Antwort

2

Beide .rel und ['rel'] sollte funktionieren:

>>> import feedparser 
>>> feed = feedparser.parse('https://lwn.net/headlines/newrss') 
>>> feed.entries[0].links[0].rel 
'alternate' 
>>> feed.entries[0].links[0]['rel'] 
'alternate' 

Als t er Art eines Eintrags ist FeedParserDict:

>>> type(feed.entries[0].links[0]) 
<class 'feedparser.FeedParserDict'> 

Welche __getattr__ implementiert, siehe: help(feed.entries[0].links[0]).