【发布时间】:2015-05-08 18:30:35
【问题描述】:
我使用feedparser 来获取RSS 数据。
这是我的代码:
>>> import datetime
>>> import time
>>> import feedparser
>>> d=feedparser.parse("http://.../rss.xml")
>>> datetimee_rss = d.entries[0].published_parsed
>>> datetimee_rss
time.struct_time(tm_year=2015, tm_mon=5, tm_mday=8, tm_hour=16, tm_min=57, tm_sec=39, tm_wday=4, tm_yday=128, tm_isdst=0)
>>> datetime.datetime.fromtimestamp(time.mktime(datetimee_rss))
datetime.datetime(2015, 5, 8, 17, 57, 39)
在我的时区 (FR) 中,实际日期是 May, 8th, 2015 18:57。
在 RSS XML 中,值为<pubDate>Fri, 08 May 2015 18:57:39 +0200</pubDate>
当我将其解析为日期时间时,我得到了2015, 5, 8, 17, 57, 39。
如何让2015, 5, 8, 18, 57, 39 不被黑,而只需配置正确的时区?
编辑:
通过这样做:
>>> from pytz import timezone
>>> datetime.datetime.fromtimestamp(time.mktime(datetimee_rss),tz=timezone('Euro
pe/Paris'))
datetime.datetime(2015, 5, 8, 17, 57, 39, tzinfo=<DstTzInfo 'Europe/Paris' CEST+2:00:00 DST>)
我得到了更好的东西,但是,它似乎不适用于脚本的其余部分,我得到了很多 TypeError: can't compare offset-naive and offset-aware datetimes 错误。
【问题讨论】:
-
我不知道提要解析器如何处理这些日期,但生成的日期时间和时间元组实际上根本不知道 tz。
-
除了您的 Python 问题,您应该注意 RSS 提要中的时间戳通常非常混乱,默认情况下您可能不应该“信任”它们。一些服务通过使用他们的“发现”日期来欺骗新闻项目。
-
@JulienGenestoux 我已经想到了。如果我在现场环境中遇到太多复杂情况,我会试试看 :-) 谢谢!
标签: python datetime rss feedparser