我需要一直抓住subreddit中的热门评论。
我已经尝试抓住所有提交内容并对其进行迭代,但不幸的是,您可以获得的帖子数量限制为1000个。
我尝试过使用Subreddit.get_comments
,但只返回25条评论。
所以我正在寻找解决方法。
你可以帮帮我吗?答案 0 :(得分:5)
可以使用get_comments
参数limit
设置为None
来获取所有可用评论。 (默认情况下,它使用帐户的金额,通常为25)。 (get_comments
使用的参数包括get_content
的参数,包括limit
)。
但是,这可能无法达到您想要的效果 - get_comments
(或更具体地说,/r/subreddit/comments
)仅提供新评论列表或新的镀金评论,而不是热门评论。由于get_comments
也限制为1000条评论,因此您无法构建完整的评论列表。
所以你真正想要的是原始算法 - 得到最高提交的列表,然后是那些的最高评论。这不是一个完美的系统(一个低分的帖子可能实际上有一个高度评价的评论),但它是最好的。
以下是一些代码:
import praw
r = praw.Reddit(user_agent='top_comment_test')
subreddit = r.get_subreddit('opensource')
top = subreddit.get_top(params={'t': 'all'}, limit=25) # For a more potentially accurate set of top comments, increase the limit (but it'll take longer)
all_comments = []
for submission in top:
submission_comments = praw.helpers.flatten_tree(submission.comments)
#don't include non comment objects such as "morecomments"
real_comments = [comment for comment in submission_comments if isinstance(comment, praw.objects.Comment)]
all_comments += real_comments
all_comments.sort(key=lambda comment: comment.score, reverse=True)
top_comments = all_comments[:25] #top 25 comments
print top_comments