.. _advanced.normalization: Content Normalization ===================== :program:`Universal Feed Parser` can parse many different types of feeds: Atom, :abbr:`CDF (Channel Definition Format)`, and nine different versions of :abbr:`RSS (Rich Site Summary)`. You should not be forced to learn the differences between these formats. :program:`Universal Feed Parser` does its best to ensure that you can treat all feeds the same way, regardless of format or version. You can access the basic elements of an Atom feed using :abbr:`RSS (Rich Site Summary)` terminology. Accessing an Atom feed as an :abbr:`RSS (Rich Site Summary)` feed ----------------------------------------------------------------- :: >>> import feedparser >>> d = feedparser.parse('http://feedparser.org/docs/examples/atom10.xml') >>> d['channel']['title'] u'Sample Feed' >>> d['channel']['link'] u'http://example.org/' >>> d['channel']['description'] u'For documentation only >>> len(d['items']) 1 >>> e = d['items'][0] >>> e['title'] u'First entry title' >>> e['link'] u'http://example.org/entry/3' >>> e['description'] u'Watch out for nasty tricks' >>> e['author'] u'Mark Pilgrim (mark@example.org)' The same thing works in reverse: you can access :abbr:`RSS (Rich Site Summary)` feeds as if they were Atom feeds. Accessing an :abbr:`RSS (Rich Site Summary)` feed as an Atom feed ----------------------------------------------------------------- :: >>> import feedparser >>> d = feedparser.parse(' http://feedparser.org/docs/examples/rss20.xml') >>> d.feed.subtitle_detail {'type': 'text/html', 'base': 'http://feedparser.org/docs/examples/rss20.xml', 'language': None, 'value': u'For documentation only'} >>> len(d.entries) 1 >>> e = d.entries[0] >>> e.links [{'rel': 'alternate', 'type': 'text/html', 'href': u'http://example.org/item/1'}] >>> e.summary_detail {'type': 'text/html', 'base': 'http://feedparser.org/docs/examples/rss20.xml', 'language': u'en', 'value': u'Watch out for nasty tricks'} >>> e.updated_parsed (2002, 9, 5, 0, 0, 1, 3, 248, 0) .. note:: For more examples of how :program:`Universal Feed Parser` normalizes content from different formats, see :ref:`annotated`.