如何使用PRAW获取Reddit特定主题的所有帖子(无需手动输入子Reddit)
无需手动指定子Reddit获取特定主题Reddit帖子的方法
你可以通过以下两种方式实现,不用手动输入子Reddit名称:
方法一:全站直接搜索
利用PRAW的reddit.search()方法,指定subreddit="all"即可搜索全站所有子Reddit中与目标主题相关的帖子,无需手动列举子Reddit。
示例代码:
import praw # 初始化PRAW客户端(需提前配置好API凭证) reddit = praw.Reddit( client_id="你的客户端ID", client_secret="你的客户端密钥", user_agent="自定义用户代理标识" ) # 搜索全站与"cricket"相关的帖子 for submission in reddit.search(query="cricket", subreddit="all", limit=None): print(f"标题: {submission.title}") print(f"所属子Reddit: r/{submission.subreddit}") print(f"帖子链接: {submission.url}\n")
- 说明:
limit=None会请求Reddit API允许的最大结果数(最多1000条),实际返回数量受API限制。
方法二:获取主题相关子Reddit后搜索
先通过reddit.subreddits.search_by_topic()获取与目标主题关联的子Reddit列表,再逐个遍历这些子Reddit进行搜索,这种方式能更精准地聚焦主题相关社区。
示例代码:
import praw reddit = praw.Reddit( client_id="你的客户端ID", client_secret="你的客户端密钥", user_agent="自定义用户代理标识" ) # 获取与"cricket"相关的子Reddit列表 related_subreddits = reddit.subreddits.search_by_topic("cricket") # 遍历每个相关子Reddit搜索帖子 for subreddit in related_subreddits: print(f"正在搜索子Reddit: r/{subreddit.display_name}") for submission in subreddit.search(query="cricket", limit=None): print(f" 标题: {submission.title}") print(f" 帖子链接: {submission.url}\n")
注意事项
- 必须遵守Reddit API使用规则,避免高频请求导致限流;
- 用户代理(user_agent)需设置为有辨识度的字符串,比如
"你的用户名的cricket内容采集工具"; - 两种方法的结果数量都受Reddit API的返回限制,无法获取平台上所有历史帖子。
内容的提问来源于stack exchange,提问作者Sushil Kumar
相关产品推荐
相关产品推荐

