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

使用snscrape抓取Twitter后,如何将结果输出至文件?

snscrape抓取Twitter内容:写入文件失败+警告问题解决

一、无法写入文件的问题

你的代码存在两个关键问题:一是写入文件的逻辑放在了循环外部,循环里每次都会覆盖tweets变量,最终只会写入最后一条抓取到的内容(如果循环没执行,tweets变量甚至不存在);二是设置了maxTweets=10但没生效,根本没限制抓取数量。

修复方案1:逐条写入文件

把写入逻辑放到循环内部,每抓到一条就写入一条:

import snscrape.modules.twitter as twitter
maxTweets = 10
keyword='salvation'

# 循环外打开文件,避免重复IO操作
with open('file.txt', 'w', encoding="utf-8") as f:
    for i, tweet in enumerate(twitter.TwitterSearchScraper(f'{keyword} since:2021-11-01 until:2023-01-01 lang:"en"').get_items()):
        if i >= maxTweets:
            break  # 达到设定的最大抓取量就停止
        tweet_data = {"tweet.url": tweet.url}
        print(tweet_data)
        print(tweet_data, file=f)

修复方案2:先收集所有内容再一次性写入

适合需要对抓取内容做后续处理的场景:

import snscrape.modules.twitter as twitter
maxTweets = 10
keyword='salvation'
all_tweets = []

for i, tweet in enumerate(twitter.TwitterSearchScraper(f'{keyword} since:2021-11-01 until:2023-01-01 lang:"en"').get_items()):
    if i >= maxTweets:
        break
    tweet_data = {"tweet.url": tweet.url}
    all_tweets.append(tweet_data)
    print(tweet_data)

# 统一写入文件
with open('file.txt', 'w', encoding="utf-8") as f:
    for item in all_tweets:
        print(item, file=f)

二、关于警告信息

你收到的future warning username is deprecated, use user.username instead翻译为:未来警告:username属性已废弃,请改用user.username。
这个警告是snscrape库内部的属性更新导致的,你的代码里并没有用到username相关属性,所以可以直接忽略;如果后续代码需要获取用户用户名,记得用tweet.user.username代替旧的tweet.username写法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:01:19