1
我需要從任何時候抓取subreddit中的頂級評論。如何使用PRAW製作一個subreddit中的頂級評論列表?
我試圖抓住所有的意見,並通過他們迭代,但不幸的帖子,你可以得到的數量被限制在1000
我一直在使用Subreddit.get_comments
嘗試,但它僅返回25的意見。
所以我正在尋找一種方法。
你能幫我嗎?
我需要從任何時候抓取subreddit中的頂級評論。如何使用PRAW製作一個subreddit中的頂級評論列表?
我試圖抓住所有的意見,並通過他們迭代,但不幸的帖子,你可以得到的數量被限制在1000
我一直在使用Subreddit.get_comments
嘗試,但它僅返回25的意見。
所以我正在尋找一種方法。
你能幫我嗎?
可以使用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
太謝謝你了! –
也感謝我! – swyx