如何根据创建日期过滤搜索结果?

2024-04-25 15:03:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想有一个脚本运行在后台,将获取subreddit数据每小时左右。现在,因为我不想在我的数据库中有重复的条目,所以我想根据created_utc过滤我的搜索结果

这是我目前所拥有的:

r = praw.Reddit(user_agent='soc')
submissions = r.get_subreddit('soccer').get_hot()

这就是我想要的:

^{pr2}$

实现这一目标的方法是什么?在


Tags: 数据脚本数据库get条目后台agentutc
2条回答

^{} class和{a2}都没有所需的基于日期的筛选方法,因此有一个选项可供选择:

在将结果放入数据库之前,用Python过滤结果。get_hotget_new返回生成器对象,因此可以使用如下列表理解:

from datetime import datetime, timedelta
import praw

# assuming you run this script every hour
an_hour_ago = datetime.utcnow() - timedelta(hours=1)
r = praw.Reddit(user_agent='soc')
submissions = r.get_subreddit('soccer').get_new()
submissions_list = [
    # iterate through the submissions generator object
    x for x in submissions
    # add item if item.created_utc is newer than an hour ago
    if datetime.utcfromtimestamp(x.created_utc) >= an_hour_ago
]

默认情况下,Reddit只返回25个列表,因此如果需要更多的列表,则必须对其进行分页。在

^{pr2}$

如果提交量大于200,则必须将其放入一个递归函数中:subreddit_latest.py

您应该比较datetime对象而不是字符串,以便将它们转换为datetime,如下所示:

from datetime import datetime
date = datetime.strptime('2016-02-18 14:33:14.000', '%Y-%m-%d %H:%M:%S.%f')

您也应该对created_utc执行相同的操作,然后将两者进行比较。我不知道你可以在gethu hot函数中进行比较,因为我从来没有用过。在

相关问题 更多 >