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

如何用PRAW爬取含指定关键词的Reddit子版块帖子评论?

解决PRAW批量爬取Reddit帖子及评论并导出CSV的问题

问题说明

使用PRAW编写Python脚本,爬取指定子版块中含特定关键词的帖子的标题、发布时间、评论数、URL及评论内容。目前能成功将标题、时间、评论数、URL导出至CSV,但评论仅能获取"comment forest"对象,无法提取实际内容;已实现单帖爬取评论的功能,但不知道如何整合到批量搜索流程中。

修改后的完整脚本

import praw
import pandas as pd

# 初始化Reddit客户端
reddit = praw.Reddit(
    client_id="xxxxxxxxxxx",
    client_secret="xxxxxxxxxxxxxx",
    password="xxxxxxxxxxxxxx",
    user_agent="xxxxxxxxxxxxxx",
    username="xxxxxxxxxxxxx",
)

# 初始化存储数据的列表
title_list = []
date_list = []
num_comments_list = []
url_list = []
comments_all = []

# 遍历搜索到的帖子
for submission in reddit.subreddit("ChatGPT").search("plagiarism"):    
    # 收集帖子基础信息
    title_list.append(submission.title)
    date_list.append(submission.created_utc)
    num_comments_list.append(submission.num_comments)
    url_list.append(submission.url)
    
    # 处理当前帖子的评论
    submission.comments.replace_more(limit=None)  # 展开所有嵌套评论
    post_comments = []
    for comment in submission.comments.list():
        if not comment.stickied:  # 跳过置顶评论
            post_comments.append(comment.body)
    # 将当前帖子的所有评论用分隔符拼接成字符串,方便CSV存储
    comments_all.append("\n---\n".join(post_comments))

# 生成DataFrame并导出CSV
df = pd.DataFrame({
    'Title': title_list,
    'Time': date_list,
    '# of comments': num_comments_list,
    'URL': url_list,
    'Comments': comments_all
})
df.to_csv('plagiarism_search.csv', index=False)

关键修改点

  • 整合评论处理逻辑:将单帖爬取评论的代码移到批量遍历的循环内部,对每个搜索到的帖子都执行评论展开和收集操作
  • 正确提取评论内容:使用submission.comments.replace_more(limit=None)展开所有嵌套的评论回复,避免遗漏深层评论;通过comment.body获取评论的实际文本内容
  • 优化CSV存储格式:将单个帖子的所有评论用\n---\n分隔拼接成字符串,确保CSV中每个单元格对应一个帖子的所有评论,避免格式混乱
  • 提升效率:把DataFrame的创建和CSV导出操作移到循环外部,避免每次循环都重复写入文件,减少IO开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:07:19