Использование «голого» * 1001 * может маскировать проблему в вашем коде. Предполагая (я не использую анализаторы каналов), что AttributeError является конкретным исключением, которое вы должны проверять, попробуйте (случайный каламбур) это:
try:
published = e.published_parsed
except AttributeError:
try:
published = e.updated_parsed
except AttributeError:
published = e.created_parsed
В любом случае, вместо "не удается", пожалуйста, покажите сообщение об ошибке и трассировку.
Редактировать
Я скачал последний выпуск (т.е. не из svn) и следовал примеру в документации с таким результатом:
C:\feedparser>\python26\python
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import feedparser
>>> d = feedparser.parse('http://portland.beerandblog.com/feed/atom/')
>>> d.entries[0].updated
u'2009-06-19T22:54:57Z'
>>> d.entries[0].updated_parsed
time.struct_time(tm_year=2009, tm_mon=6, tm_mday=19, tm_hour=22, tm_min=54, tm_sec=57, tm_wday=4, tm_yday=170, tm_isdst=0)
>>> d.entries[0].title
u'Widmer is sponsoring our beer for the After Party!!'
>>> d.entries[0].published
u'2009-06-19T22:30:35Z'
>>> d.entries[0].published_parsed
time.struct_time(tm_year=2009, tm_mon=6, tm_mday=19, tm_hour=22, tm_min=30, tm_sec=35, tm_wday=4, tm_yday=170, tm_isdst=0)
>>>
Как я уже сказал, я не разбираюсь в RSS и Atoms и тому подобное, но мне это кажется довольно простым. За исключением того, что я не понимаю, откуда вы получаете тег <pubDate>
и временные метки в стиле arpanet; AFAICT, которого нет в необработанном источнике - он имеет <published>
и метки времени ISO:
>>> import urllib
>>> guff = urllib.urlopen('http://portland.beerandblog.com/feed/atom/').read()
>>> guff.find('pubDate')
-1
>>> guff.find('published')
1171
>>> guff[1160:1200]
'pdated>\n\t\t<published>2009-06-19T22:30:35'
>>>
Какое ваше "е" в "e.published_parsed"? Попробуйте показать полную историю с доступом к feedparser, как я делал выше.