ошибка атрибута feedparser

#python #xml #rss #feedparser

#python #xml #RSS-канал #feedparser

Вопрос:

Я пытаюсь извлечь некоторые новости из rss-канала BBC и сохранить определенные части локально в xml (хотя этот код только печатает их). Кажется, я могу получить все, что хочу, за исключением pubDate. Я получаю ошибку

 "File "/Library/Python/2.7/site-packages/feedparser.py", line 416, in __getattr__
raise AttributeError, "object has no attribute '%s'" % key
AttributeError: object has no attribute 'pubDate'"
  

Я не уверен, почему, поскольку все остальное, что я хотел получить, не вызвало никаких проблем. Вот код:

 import feedparser
import xml.etree.cElementTree as ET
from xml.dom import minidom

BBCHome = feedparser.parse ('http://feeds.bbci.co.uk/news/rss.xml')


def prettify(elem):

    rough_string = ET.tostring(elem, 'utf-8')
    reparsed = minidom.parseString(rough_string)
    return reparsed.toprettyxml(indent="  ")

root = ET.Element('root')

for story in BBCHome.entries:
    item = ET.SubElement(root,'item')
    title = ET.SubElement(item,'title')
    title.text = story.title
    # why doesn't pubDate work?
    pubDate = ET.SubElement (item,'pubDate')
    pubDate.text = story.pubDate
    description = ET.SubElement(item,'description')
    description.text = story.description
    link = ET.SubElement(item,'link')
    link.text = story.link
    print prettify(root)
  

Читаю эту страницу: https://pythonhosted.org/feedparser/namespace-handling.html
Я думаю, что это может иметь какое-то отношение к пространствам имен, но tbh я действительно не понимаю.
Я просмотрел необработанный канал, и он кажется просто еще одним вложенным элементом item, похожим на description или title.

Если бы я мог узнать, как это исправить и почему это не работает, я был бы очень признателен. Спасибо.

Комментарии:

1. Может быть, print story тогда вы получите то, что находится внутри — возможно, у него другое имя.

Ответ №1:

Я печатаю story.keys() и получаю только.

 ['summary_detail', 'published_parsed', 'links', 'title', 'media_thumbnail',
 'summary', 'guidislink', 'title_detail', 'href', 'link', 'published', 'id']
  

Возможно, story.published это то, что вам нужно.

Комментарии:

1. Именно то, что мне было нужно. Спасибо. По какой-то причине я думал, что имена подэлементов в ленте будут такими же, как то, что мне нужно было получить