使用Python PRAW获取热门Subreddit列表的技术求助
获取热门Subreddit的解决方案
你之前的代码是获取r/all下的热门帖子,所以返回的是帖子对象而非Subreddit对象。下面提供两种可行方案:
方案一:获取官方热门Subreddit列表
PRAW提供了直接获取官方认定的热门Subreddit的方法,返回的是Subreddit对象迭代器,可直接获取名称、订阅数等属性:
# 遍历热门Subreddit(可通过limit指定数量) for subreddit in reddit_client.subreddits.popular(limit=20): print(f"Subreddit名称: r/{subreddit.display_name}") print(f"订阅人数: {subreddit.subscribers}") print(f"简介: {subreddit.public_description}\n")
方案二:基于热门帖子统计热门Subreddit
如果想要统计当前热门帖子中出现次数最多的Subreddit,可以遍历热门帖子,收集对应的Subreddit信息并排序:
from collections import defaultdict # 统计热门帖子所属Subreddit的出现次数 subreddit_count = defaultdict(int) subreddit_cache = {} # 遍历r/all的热门帖子(limit可调整) for post in reddit_client.subreddit("all").top(limit=100): sub = post.subreddit subreddit_count[sub.display_name] += 1 subreddit_cache[sub.display_name] = sub # 缓存Subreddit对象避免重复请求 # 按出现次数从高到低排序 popular_subreddits = sorted(subreddit_count.items(), key=lambda x: x[1], reverse=True) # 输出前20个热门Subreddit及相关信息 for name, count in popular_subreddits[:20]: sub = subreddit_cache[name] print(f"r/{name}: {count}个热门帖子,订阅人数{sub.subscribers}")
内容的提问来源于stack exchange,提问作者Guilherme Takata
相关产品推荐
相关产品推荐

