Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用feedparser按日期限制RSS元素。[Python]_Python_Feedparser - Fatal编程技术网

使用feedparser按日期限制RSS元素。[Python]

使用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

我像这样迭代RSS提要,其中_文件是提要

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)