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

如何用Python结合Twitter Search API统计扩展推文数量?

扩展推文识别失败的问题分析与修复方案

问题1:搜索时未指定tweet_mode='extended'

Twitter API默认返回截断版推文(最多140字符),如果不指定tweet_mode='extended',搜索结果里根本不会包含扩展推文的完整数据,自然统计不到目标内容。

问题2:判断扩展推文的逻辑错误

你代码里的if (tweet_mode='extended') in tweet:是语法错误,且逻辑完全不成立。正确逻辑是:当指定tweet_mode='extended'后,原创扩展推文的内容存在于tweet.full_text属性中;转发的扩展推文,内容则在tweet.retweeted_status.full_text里。

修正后的代码

import tweepy
import keys

auth = tweepy.OAuthHandler(keys.consumer_key, keys.consumer_secret)
auth.set_access_token(keys.access_token, keys.access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

# 必须添加tweet_mode='extended'参数才能获取扩展推文数据
tweets = api.search(q='Covid', count=1000, tweet_mode='extended')

count = 0

for tweet in tweets:
    try:
        # 统计原创扩展推文(通过full_text属性和内容长度验证)
        if hasattr(tweet, 'full_text') and len(tweet.full_text) > 140:
            count += 1
        # 统计转发的扩展推文
        elif hasattr(tweet, 'retweeted_status') and hasattr(tweet.retweeted_status, 'full_text') and len(tweet.retweeted_status.full_text) > 140:
            count += 1
    except Exception as e:
        print(f"处理推文出错: {e}")

print("Number of extended tweets: ", count)

补充说明

  • tweet_mode='extended'是获取扩展推文的必要参数,必须在调用search方法时明确指定。
  • 转发的扩展推文需要从retweeted_status子对象中提取full_text,因为原推文的完整内容会嵌套在转发结构里。
  • 通过len(full_text) > 140可以进一步确认是真正的长推文,不过也存在用户故意在扩展模式下发短内容的情况,这个判断可根据需求取舍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:50:37