You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python PRAW库获取Reddit账号订阅的subreddits

错误原因

你现有代码的核心问题是调用路径错误:PRAW没有把获取当前用户订阅子版块的方法挂在Redditor类下,你写的redditor.subscriber()本身不存在对应实现,自然会报错。
你找到的原生订阅列表查询接口,PRAW已经做了内置封装,不需要自己手写requests请求调用,直接用认证后的Reddit实例对应方法即可。

完整实现方案

代码分两步实现,先拉取旧账号订阅列表存本地,再登录新账号批量订阅。

第一步:导出旧账号订阅列表

import praw
import json
import time

# 初始化旧账号认证实例
old_reddit = praw.Reddit(
    client_id = 'RXv8w855SBV_*********',
    client_secret = 'rWiK0nuxh8X0snK-************',
    password = '***',
    user_agent = 'GetSubs/0.01',
    username = 'fearthecooper'
)

subscribed_subs = []
# limit=None表示拉取全量结果,PRAW自动处理分页
for sub in old_reddit.subreddits.subscriber(limit=None):
    subscribed_subs.append(sub.display_name)
    print(f"已拉取订阅:r/{sub.display_name}")

# 保存到本地文件,避免重复请求
with open("sub_list.json", "w", encoding="utf-8") as f:
    json.dump(subscribed_subs, f, ensure_ascii=False, indent=2)

print(f"导出完成,共获取{len(subscribed_subs)}个订阅子版块")

第二步:新账号批量导入订阅

import praw
import json
import time

# 读取本地存储的订阅列表
with open("sub_list.json", "r", encoding="utf-8") as f:
    sub_list = json.load(f)

# 初始化新账号认证实例
new_reddit = praw.Reddit(
    client_id = '新账号对应的应用client_id',
    client_secret = '新账号对应的应用client_secret',
    password = '新账号密码',
    user_agent = 'ImportSubs/0.01',
    username = '新账号用户名'
)

for sub_name in sub_list:
    try:
        new_reddit.subreddit(sub_name).subscribe()
        print(f"成功订阅 r/{sub_name}")
        # 加1秒延时,避免触发接口频率限制
        time.sleep(1)
    except Exception as e:
        print(f"订阅r/{sub_name}失败:{str(e)}")
关键说明
  • reddit.subreddits.subscriber()是PRAW对应用户订阅列表查询接口的官方封装,调用时自动使用当前Reddit实例绑定的认证用户身份,不需要额外指定用户名,也不需要手动实例化redditor对象。
  • 如果旧账号已经被封禁,需要确认你在旧账号下创建的脚本应用仍处于有效状态,否则无法通过API认证拉取数据。
  • PRAW的列表类接口默认只返回前25条结果,拉取全量数据必须显式指定limit=None,库会自动处理后续翻页逻辑,不需要手动传after/cursor参数。

内容的提问来源于stack exchange,提问作者CoopyThicc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 03:06:23