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

如何使用tweepy获取完整推文而非截断带短链内容(添加tweet_mode='extended'报错)

Tweepy 获取非截断完整推文的实操方案

报错根因

在api.search参数中添加tweet_mode='extended'的操作本身不存在错误,触发AttributeError: 'Status' object has no attribute 'text'的核心原因是:启用extended模式后,Tweepy返回的Status对象会移除原有的text截断属性,将完整文本转移到专属字段存储,原有代码中直接读取tweet.text的逻辑,会因目标属性不存在触发报错。

修正操作

  • 在api.search接口中显式传入tweet_mode='extended'参数,强制Twitter接口返回最长280字的完整推文,替代默认的截断版+短链格式
  • 替换原有读取tweet.text的逻辑,分场景读取对应字段:
    • 普通原创推文:完整文本存储在tweet.full_text字段
    • 转推类推文:完整原推文文本存储在tweet.retweeted_status.full_text字段,直接读取顶层full_text只会拿到带"RT @xxx:"前缀的截断内容
  • 沿用原有@提及正则清洗、文件写入、列表存储的业务逻辑即可

可直接复用的修正后代码

fetched_tweets = api.search(q, lang='en', count=count, tweet_mode='extended')

for tweet in fetched_tweets:
    parsed_tweet = {}
    # 分场景兼容普通推文、转推的全量文本获取
    if hasattr(tweet, 'retweeted_status'):
        full_tweet_text = tweet.retweeted_status.full_text
    else:
        full_tweet_text = tweet.full_text
    parsed_tweet['text'] = full_tweet_text

    line = re.sub('@[\w]+', '', full_tweet_text)
    target.write(line+"\n")
    target.write("--------------------------------------------------------------\n")
    tweets.append(line)

实际效果

修改完成后,之前被截断、搭配短链返回的推文(例如仅展示"ADAM ARON CONFIRMED IF WE VOTE YES ON THE 500M...GIVE TH…"搭配t.co短链的内容),会完整返回包含全部正文、话题标签、自定义标记的全量内容,不会出现省略号截断的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 01:15:06