如何利用PRAW截取Reddit帖子标题数字并过滤内容
解决方案:过滤Reddit帖子标题数字符合要求的内容
这里给你整理了完整的修改代码,既能过滤置顶帖,又能筛选出标题前两位数字不大于18的帖子,还把符合条件的内容存到了变量里:
import praw # 初始化PRAW客户端(替换为你的真实凭据) reddit = praw.Reddit( client_id='REDACTED', client_secret='REDACTED', username='REDACTED', password='REDACTED', user_agent='REDACTED' ) subreddit = reddit.subreddit('NumbersReddit') new_numpost = subreddit.new(limit=10) valid_posts = [] # 存储符合条件的帖子信息的变量 for submission in new_numpost: # 先跳过置顶帖子 if not submission.stickied: # 提取标题前两位数字并转为整数(你说标题开头始终是两位数字,所以这个操作安全) title_number = int(submission.title[:2]) # 只保留标题数字≤18的帖子(移除大于18的) if title_number <= 18: # 打印符合要求的帖子信息 print(50*'-') print(f'User: {submission.author}') print(f'Title: {submission.title}') print(f'URL: {submission.url}') # 将帖子信息存入变量,方便后续处理 valid_posts.append({ 'author': str(submission.author), 'title': submission.title, 'url': submission.url }) # 可以查看存储的有效帖子列表 print("\n已保存的有效帖子:") for post in valid_posts: print(post['title'])
关键逻辑拆解
- 置顶帖过滤:
if not submission.stickied确保我们只处理普通帖子,跳过社区置顶的公告类内容。 - 标题数字提取:
submission.title[:2]直接截取标题前两位字符,再用int()转为整数——因为你明确说明标题开头始终是两位数字,所以这个切片操作不会出问题。 - 数值筛选:
if title_number <= 18实现你的核心需求:移除标题数字大于18的帖子,只保留符合阈值的内容。 - 变量存储:新增的
valid_posts列表可以把符合条件的帖子信息(作者、标题、URL)都存起来,后续你可以直接调用这个变量做进一步分析或保存。
额外优化建议
如果后续遇到标题前两位不是纯数字的特殊情况(虽然你现在说不会出现),可以加个异常处理避免程序崩溃:
try: title_number = int(submission.title[:2]) except ValueError: # 标题前两位不是数字,直接跳过该帖子 continue
内容的提问来源于stack exchange,提问作者GhostCat
相关产品推荐
相关产品推荐

