![](/img/trans.png)
[英]How do I get more than 10 entries from Users or Interests using Mailchimp API 3.0?
[英]How do I retrieve all RSS entries that are no more than X days old
我正在使用Python和RSS feedparser模块来检索RSS条目。 但是,我只想检索不超过x天的新闻条目。
例如,如果x = 4,则我的Python代码不应获取比当前日期早四天的任何内容。
Feedparser可让您抓取该条目的“发布”日期,但是它是unicode类型的,我不知道如何将其转换为datetime对象。
这是一些示例输入:
date = 'Thu, 29 May 2014 20:39:20 +0000'
这是我尝试过的:
from datetime import datetime
date_object = datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %z')
这是我得到的错误:
ValueError: 'z' is a bad directive in format '%a, %d %b %Y %H:%M:%S %z'
我希望这样做:
from datetime import datetime
a = datetime(today)
b = datetime(RSS_feed_entry_date)
>>> a-b
datetime.timedelta(6, 1)
(a-b).days
6
为此,您已经有一个time.struct_time
查看feed.entries[0].published_parsed
您可以使用time.mktime将其转换为时间戳,并将其与time.time()进行比较,以了解过去的时间:
一个例子:
>>> import feedparser
>>> import time
>>> f = feedparser.parse("http://feeds.bbci.co.uk/news/rss.xml")
>>> f.entries[0].published_parsed
time.struct_time(tm_year=2014, tm_mon=5, tm_mday=30, tm_hour=14, tm_min=6, tm_sec=8, tm_wday=4, tm_yday=150, tm_isdst=0)
>>> time.time() - time.mktime(feed.entries[0].published_parsed)
4985.511506080627
显然,这对您来说将是一个不同的值,但是如果小于(对于您而言)86400 * 4(4天的秒数),那就是您想要的。
因此,简而言之
[entry for entry in f.entries if time.time() - time.mktime(entry.published_parsed) < (86400*4)]
会给你你的清单
from datetime import datetime
date = 'Thu, 29 May 2014 20:39:20 +0000'
if '+' in date:
dateSplit = date.split('+')
offset = '+' + dateSplit[1]
restOfDate = str(dateSplit[0])
date_object = datetime.strptime(restOfDate + ' ' + offset, '%a, %d %b %Y %H:%M:%S ' + offset)
print date_object
Yields 2014-05-29 20:39:20
,当我研究您的时区错误时,我遇到了另一个SO问题,说strptime
在时区strptime
有麻烦( 链接到问题) 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.