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

使用Python+Tweepy抓取指定话题标签Twitter推文 存JSON时报AttributeError如何解决

报错核心原因

触发AttributeError: 'str' object has no attribute '_json'的问题来源有两处:

  • 构建all_tweets列表时,提前拆解了Tweepy的原生Tweet对象:你写的列表推导式all_tweets=[tweet.text for tweet in tweets],直接把每个tweet实例的.text属性(也就是字符串类型的推文纯文本)存进了列表,后续遍历该列表时,元素已经是纯字符串,不再是带_json属性的Tweet实体,自然无法调用对应方法。
  • 文件保存逻辑存在缺陷:原代码在for循环内逐次以覆盖模式打开同一个文件做写入,就算Tweet对象属性正确,最终也只会留存最后一条推文的内容。
修正操作步骤
  1. 调整列表存储逻辑,保留完整Tweet实体
    不要提前把推文转成纯文本,需要获取完整JSON结构时,要保留Tweepy返回的原生Tweet对象:
# 替换原有all_tweets的构建代码
tweets = tw.Cursor(api.search, q=query, lang='en').items(50)
all_tweets = [tweet for tweet in tweets]
# 后续如果需要单独提取推文文本,直接访问对象的text属性即可,例如all_tweets[0].text
  • 同时删除冗余的无效导入:原代码中的import tweepy as OAuthHandler没有实际作用,直接移除即可。
  1. 调整JSON文件保存逻辑
    不要在循环内逐次写文件,先把所有推文的JSON字段整理成统一列表,一次性写入文件,避免反复覆盖:
import json

# 批量提取所有推文的完整JSON结构
tweets_full_json = [tweet._json for tweet in all_tweets]

# 一次性写入文件,增加ensure_ascii=False参数避免emoji、特殊字符被转义为乱码
with open('tweetsfile.json', 'w', encoding='utf8') as file:
    json.dump(
        tweets_full_json,
        file,
        sort_keys=True,
        indent=4,
        ensure_ascii=False
    )
  • 顺便修正原代码中不规范的文件命名:原代码里写的tweetsfile._json、tweet.text_json属于后缀错误,调整为统一的.json格式即可。

内容的提问来源于stack exchange,提问作者Ahd Abu Alrob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 17:15:01