使用PRAW获取Reddit每日Top帖子重复返回相同ID求助
解决PRAW重复返回相同Reddit Top帖子ID的问题
嘿,我明白你碰到的问题了——这本质上是因为你调用top()方法时没有指定时间范围,PRAW的top()默认会返回全时间段内的最高赞帖子,那些长期霸榜的热门帖自然会一直占据Top1的位置,所以你每天运行代码拿到的都是同一个帖子ID。
解决方案:指定时间范围参数
你只需要给top()方法加上time_filter参数,就能限定获取特定时间段内的Top帖子。可选的时间范围包括:'hour'、'day'、'week'、'month'、'year'、'all',针对你的每日获取需求,用'day'就能获取过去24小时内的Top帖子。
另外,我注意到你的原代码里漏写了获取subreddit的步骤,这会导致运行报错,我也一起补上了:
import praw # 初始化Reddit客户端 reddit = praw.Reddit( client_id='你的client_id', client_secret='你的client_secret', password='你的账号密码', user_agent='自定义用户代理', username='你的Reddit用户名' ) # 目标subreddit(这里以funny为例,换成你需要的板块) subreddit = reddit.subreddit('funny') # 获取当日Top1帖子,指定time_filter为'day' top_daily_funny = subreddit.top(limit=1, time_filter='day') for submission in top_daily_funny: print(f"帖子ID: {submission.id}") print(f"帖子标题: {submission.title}")
额外说明
- 如果你需要的是每周/每月更新的Top,只需要把
time_filter改成对应的'week'或'month'即可。 - 不用担心API缓存问题,只要每次运行都是全新的Reddit实例,指定时间范围后就能拿到对应时段的最新Top内容。
内容的提问来源于stack exchange,提问作者TheGamechanger
相关产品推荐
相关产品推荐

