【问题标题】:Getting all submissions for the past two months from a particular subreddit (using PRAW)?从特定的 subreddit(使用 PRAW)获取过去两个月的所有提交?
【发布时间】:2017-04-19 00:44:58
【问题描述】:

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

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

【问题讨论】:

  • 仍在寻找完成它的方法。我不知道该用什么。
  • 您使用的是 PRAW 3 还是 4?
  • 我还没有移植到 4.0,但我正在计划。所以我猜是 4.0。
  • 但我也可以继续使用 3.6,所以一切顺利。

标签: python reddit praw


【解决方案1】:

只是想为使用 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)

【讨论】:

  • 这已经有几年的历史了,但是......此代码不再适用于“Subreddit”对象没有属性“提交”。有没有一种新方法可以在 2 个时间戳之间的 subreddit 中获取提交或 cmets?
【解决方案2】:

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

timestamp:START_UNIX_TIMESTAMP..END_UNIX_TIMESTAMP

如果您期望返回的条目少于 1000 个,那么设置搜索来执行此操作应该相对简单。不过,搜索查询限制为 1000 个请求,因此如果帖子数量超出预期,则需要一些特殊逻辑。

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

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> 并重复直到没有更多结果。

【讨论】:

  • 只需将reddit.subreddit('test')线上的subreddit更改为您喜欢的任何内容,它应该同样有效。
  • 太好了,我将开始研究这个。我想知道有没有办法像使用 UI 一样获得上个月前 1000 个帖子?在 PRAW 3.6 中,我们执行类似 submissions = r.get_subreddit('politics').get_top(limit=1000) 的操作。我们可以添加一些其他参数以指定上个月吗?
  • @meta 是的,你可以使用.get_top(time_filter='month')time_filter 的选项有:全部、日、小时、月、周、年。
  • 是的,它工作正常。谢谢!!现在我想我会自己做这件事,而不是在两个月内浏览所有帖子。
  • prawcore.exceptions.ServerError: received 503 HTTP response
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 2016-10-07
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
相关资源
最近更新 更多