You need to enable JavaScript to run this app. 如何将PSAW采集的WallStreetBets带cash tag的帖子数据导出为Excel
优惠活动
大模型
产品
解决方案
定价
更多

如何将PSAW采集的WallStreetBets带cash tag的帖子数据导出为Excel

WSB帖子数据导出Excel可落地实现

你照着社区pandas导出教程始终跑不通的核心原因是:原代码仅在循环中逐条将内容打印到控制台,根本没有将筛选后的字段统一存入可对接pandas的结构化数据集,没有可导出的数据源,自然走不通导出流程。按照以下步骤修改即可一次性跑通:

第一步:清理冗余依赖

原代码中导入的pandas_datareader在全流程中没有被实际调用,保留反而可能引发不必要的依赖版本冲突,直接删除对应导入行即可。

第二步:初始化结构化存储容器

在启动循环遍历帖子之前,初始化空列表用于存储每一条符合筛选条件的帖子字段,避免循环拉取过程中数据丢失。

第三步:替换原有控制台打印逻辑

原循环中判断帖子包含cash tag时的打印代码,替换为将所有需要的字段按固定结构存入列表,过程中做两处格式优化,避免Excel导出后可读性差:

  • 将Unix时间戳转换为可读的标准时间格式,避免导出后Excel单元格显示一串无意义的数字时间戳
  • 将匹配到的cash tag列表拼接为逗号分隔的字符串,避免导出后单元格保留Python列表的方括号格式

第四步:完成Excel导出

提前安装pandas导出xlsx格式需要的依赖引擎openpyxl(直接执行pip install openpyxl即可),将存储数据的列表转换为pandas DataFrame后,直接调用to_excel方法落地文件,指定index=False参数避免将pandas自带的行索引作为多余列导入Excel。

整合后可直接运行的完整代码

from psaw import PushshiftAPI
import datetime
import pandas as pd

# 初始化PSAW采集接口
api = PushshiftAPI()
# 设置采集起始时间为2021-03-16
start_time = int(datetime.datetime(2021,3,16).timestamp())
# 初始化空列表存储所有符合筛选条件的结构化数据
record_list = []

# 拉取指定时间节点后的wallstreetbets板块帖子
submissions = api.search_submissions(
    after=start_time,
    subreddit='wallstreetbets',
    filter=['url','author','title','subreddit']
)

# 遍历帖子做cash tag筛选
for submission in submissions:
    words = submission.title.split()
    cashtags = list(set(filter(lambda word: word.lower().startswith('$'), words)))
    # 仅保留标题中包含cash tag的帖子
    if len(cashtags) > 0:
        # 转换时间戳为可读格式
        publish_time = datetime.datetime.fromtimestamp(submission.created_utc).strftime("%Y-%m-%d %H:%M:%S")
        # 将单条结构化数据追加到列表
        record_list.append({
            "发布时间": publish_time,
            "作者": submission.author,
            "帖子标题": submission.title,
            "帖子链接": submission.url,
            "匹配到的Cash Tag": ", ".join(cashtags)
        })

# 数据准备完成后执行导出
if len(record_list) > 0:
    df = pd.DataFrame(record_list)
    df.to_excel("wsb_cashtag_posts.xlsx", index=False, engine="openpyxl")
    print(f"导出完成,共采集到{len(record_list)}条符合要求的帖子数据")
else:
    print("未筛选到符合条件的帖子数据")

常见踩坑排查

  • 导出时出现ModuleNotFoundError: No module named 'openpyxl':缺少xlsx格式导出依赖,执行pip安装对应包即可
  • 导出的cash tag列格式异常:检查是否将原始列表格式的cashtags直接存入了字典,未做字符串拼接
  • 导出的时间列显示为一串数字:检查是否未对created_utc时间戳做格式化转换
  • 采集过程中程序中断导致数据丢失:已存入record_list的内容会一直保留在内存中,中断后可随时手动调用列表转DataFrame、导出Excel的代码,不会丢失已经拉取到的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 19:15:04