使用feedparser按日期限制RSS元素。[Python]
我像这样迭代RSS提要,其中_文件是提要使用feedparser按日期限制RSS元素。[Python],python,feedparser,Python,Feedparser,我像这样迭代RSS提要,其中_文件是提要 d = feedparser.parse(_file) for element in d.entries: print repr(element.date) 输出的日期是这样的 u'Thu, 16 Jul 2009 15:18:22 EDT' 我似乎无法理解如何实际量化上述日期输出,以便我可以使用它来限制提要元素。我想问的是,我怎样才能从中得到一个实际的时间,所以我可以说,如果大于7天,跳过这个元素。单向 >>> impo
d = feedparser.parse(_file)
for element in d.entries:
print repr(element.date)
输出的日期是这样的
u'Thu, 16 Jul 2009 15:18:22 EDT'
我似乎无法理解如何实际量化上述日期输出,以便我可以使用它来限制提要元素。我想问的是,我怎样才能从中得到一个实际的时间,所以我可以说,如果大于7天,跳过这个元素。单向
>>> import time
>>> t=time.strptime("Thu, 16 Jul 2009 15:18:22 EDT","%a, %d %b %Y %H:%M:%S %Z")
>>> sevendays=86400*7
>>> current=time.strftime ("%s",time.localtime())
>>> if int(current) - time.mktime(t) > sevendays:
print "more than 7 days"
您还可以查看该模块并使用timedelta()进行日期计算。如果您安装该模块:
将dateutil.parser作为dp导入
将dateutil.tz导入为dtz
导入日期时间
日期_string=u'Thu,2009年7月16日美国东部夏令时15:18:22'
adatetime=dp.parse(日期字符串)
打印(adatetime)
# 2009-07-16 15:18:22-04:00
now=datetime.datetime.now(dtz.tzlocal())
打印(现在)
# 2010-02-04 23:35:52.428766-05:00
aweekago=now datetime.timedelta(天=7)
印刷品(aweekago)
# 2010-01-28 23:35:52.428766-05:00
如果adatetimefeedparser应该从Python的时间模块中为您提供一个struct_time对象。我猜它不识别日期格式,所以会给你原始字符串
请参见此处,了解如何添加对解析格式错误的时间戳的支持:
如果您设法让它为您提供结构化时间,您可以在此处阅读更多信息:
struct_time对象拥有您所需的一切。他们有以下成员:
time.struct_time(tm_year=2010,tm_mon=2,tm_mday=4,tm_hour=23,tm_min=44,tm_sec=19,tm_wday=3,tm_yday=35,tm_isdst=0)
我通常将结构转换为秒,如下所示:
import time
import calendar
struct = time.localtime()
seconds = calendar.timegm(struct)
然后,您可以只做常规的数学运算来查看已经过去了多少秒,或者使用datetime模块来做时间增量
import time
import calendar
struct = time.localtime()
seconds = calendar.timegm(struct)