我使用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
。在
在rssxml中,值是<pubDate>Fri, 08 May 2015 18:57:39 +0200</pubDate>
当我把它解析成datetime时,我得到2015, 5, 8, 17, 57, 39
。在
如何使2015, 5, 8, 18, 57, 39
不受恶意攻击,而只需配置正确的时区?在
编辑:
通过这样做:
^{pr2}$我得到了一些更好的东西,但是,它在脚本的其余部分似乎不起作用,我得到了很多TypeError: can't compare offset-naive and offset-aware datetimes
错误。在
试试这个:
feedparser
确实提供了原始的日期时间字符串(只需从属性名中删除_parsed
后缀),因此,如果您知道字符串的格式,您可以自己将其解析为支持tz的datetime对象。在例如,通过您的代码,您可以获得tz感知对象:
有关
strptime()
的更多参考,请参见https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior编辑:由于Python2.x不支持
^{pr2}$%z
指令,请改用python-dateutil
那么
文档位于https://dateutil.readthedocs.org/en/latest/
feedparser
返回UTC时区的时间。对它应用time.mktime()
是不正确的(除非您的本地时区不是UTC)。您应该改为使用calendar.timegm()
:RSS feeds may use many different dates formats;我将把日期解析留给
feedparser
模块。在如果要将本地时间作为可感知的datetime对象:
^{pr2}$相关问题 更多 >
编程相关推荐