gpt4 book ai didi

python - Praw:如何根据创建日期过滤搜索结果?

转载 作者:行者123 更新时间:2023-11-28 16:27:11 26 4
gpt4 key购买 nike

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

这是我目前拥有的:

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

这就是我想要的:

r = praw.Reddit(user_agent='soc')
submissions = r.get_subreddit('soccer').get_hot(created_utc > '2016-02-18 14:33:14.000')

有哪些方法可以实现?

最佳答案

SubReddit class 都不是也不是 Reddit API拥有您想要的基于日期的过滤方法,因此这是您的一个选择:

在将结果放入数据库之前,先用 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 个列表,因此如果您需要更多,则必须对其进行分页。

limit = 100  # Reddit maximum limit
total_list = []
submissions = r.get_subreddit('soccer').get_new(limit=limit)
submissions_list = [
x for x in submissions
if datetime.utcfromtimestamp(x.created_utc) >= an_hour_ago
]
total_list += submissions_list
if len(submissions_list) == limit:
submissions = r.get_subreddit('soccer').get_new(
# get limit of items past the last item in the total list
limit=100, params={"after": total_list[-1].fullname}
)
submissions_list_2 = [
# 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
]
total_list += submissions_list_2
print total_list

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

关于python - Praw:如何根据创建日期过滤搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com