从特定的 subreddit 获取过去两个月的所有提交(使用 PRAW)?

Getting all submissions for the past two months from a particular subreddit (using PRAW)?

我试图获取过去两个月的所有 /r/politics 帖子以及所有评论和用户详细信息。我如何使用 PRAW 执行此操作?

我应该浏览 get_hot() 中的帖子吗?关于如何解决这个问题的任何想法?有没有我可以利用的时间戳方法?

您可以使用 Cloudsearch syntax 在 2 个时间戳之间进行搜索。语法是:

timestamp:START_UNIX_TIMESTAMP..END_UNIX_TIMESTAMP

如果您希望返回的条目少于 1000 个,只需设置搜索即可相对简单。但是,搜索查询限制为 1000 个请求,因此如果 post 比预期的多,则需要一些特殊逻辑。

要搜索过去 2 个月内的任何 post,请尝试:

import time
current_timestamp = time.time()
# 60 seconds * 60 minutes * 24 hours * 60 days = 2 months
two_months_timestamp = current_timestamp - (60 * 60 * 24 * 60)
query = 'timestamp:{}..{}'.format(current_timestamp, two_months_timestamp)
results = reddit.subreddit('test').search(query, sort='new')

如果您需要获取超过 1000 个,我建议获取搜索结果中最后一项的时间戳,然后存储该时间戳并搜索 timestamp:<current_timestamp>..<last_item_timestamp> 并重复直到没有更多结果。

只想为使用 PRAW 4+ 的任何人分享一个补充解决方案,使用非常适合在时间戳之间搜索的 Subreddit.submissions 方法。使用与接受的答案相同的代码片段:

import time
current_timestamp = time.time()
# 60 seconds * 60 minutes * 24 hours * 60 days = 2 months
two_months_timestamp = current_timestamp - (60 * 60 * 24 * 60)
results = reddit.subreddit('test').submissions(two_months_timestamp, current_timestamp)