2015-09-05 35 views
1

我需要從任何時候抓取subreddit中的頂級評論。如何使用PRAW製作一個subreddit中的頂級評論列表?

我試圖抓住所有的意見,並通過他們迭代,但不幸的帖子,你可以得到的數量被限制在1000

我一直在使用Subreddit.get_comments嘗試,但它僅返回25的意見。

所以我正在尋找一種方法。

你能幫我嗎?

回答

4

可以使用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 
+1

太謝謝你了! –

+0

也感謝我! – swyx

相關問題