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

如何使用Twitter API获取推文作者用户名、粉丝数等相关信息

Twitter API v2 爬取用户关联信息解决方案

核心原因

你添加的expansions和user.fields请求参数配置逻辑是正确的,获取不到用户信息是因为Twitter API v2的扩展关联数据不会和推文基础数据放在同一层级的data字段中,而是单独存储在返回体的includes.users数组里,需要你自行通过author_id做映射匹配。

调整步骤

1. 补全请求参数

要获取你需要的4项用户信息,需要补充user.fields的取值范围,修正后的参数如下:

query = 'football'
tweet_fields = "author_id,created_at,text,public_metrics,possibly_sensitive,source,lang"
# 补全user.fields:username=用户名,name=显示名称,public_metrics包含粉丝、关注数
user_fields = "username,name,public_metrics,description"
max_results = "50"

headers = {"Authorization": "Bearer {}".format(BEARER_TOKEN)}
# URL拼接逻辑不变
url = "https://api.twitter.com/2/tweets/search/recent?query={}&tweet.fields={}&expansions=author_id&user.fields={}&max_results={}".format(query, tweet_fields, user_fields, max_results)

2. 正确解析返回结果

拿到响应后需要同时提取推文数据和关联用户数据,把用户数据转为ID为键的字典方便匹配,示例代码如下:

response = requests.request("GET", url, headers=headers)
if response.status_code != 200:
    raise Exception(response.status_code, response.text)
res_json = response.json()

# 提取推文基础数据
twitter_search_data = res_json['data']
# 提取关联用户数据,转为ID映射字典
user_list = res_json['includes']['users']
user_map = {user['id']: user for user in user_list}

# 遍历匹配用户信息
twitter_response = []
for tweet in twitter_search_data:
    # 匹配当前推文对应的作者信息
    author_info = user_map.get(tweet['author_id'], {})
    # 提取你需要的字段
    full_data = {
        **tweet,
        # 1. 作者用户名
        'author_username': author_info.get('username'),
        # 2. 作者显示名称
        'author_name': author_info.get('name'),
        # 3. 作者粉丝数
        'author_followers': author_info.get('public_metrics', {}).get('followers_count'),
        # 4. 作者关注数
        'author_following': author_info.get('public_metrics', {}).get('following_count')
    }
    twitter_response.append(full_data)
    print(full_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:54:04