如何获取Twitter列表所有成员用户名?代码调用遇404错误求助
解决Twitter列表成员获取时的404错误问题
看起来你在抓取Twitter列表成员时碰到了404资源不存在的错误,我来帮你排查下问题根源和解决办法。
首先你提到的列表https://twitter.com/journalismnews/lists/uk-national-journalists?lang=en是公开可访问的,所以问题大概率出在API请求的逻辑上,尤其是Twitter不同版本API的规则差异导致的端点使用错误。
核心问题:API端点不匹配
Twitter目前主推v2 API,而v2和旧版v1.1 API在获取列表成员的逻辑上有明显区别:
- v1.1 API:可以直接通过
owner_screen_name和slug两个参数请求成员 - v2 API:必须先获取列表的唯一ID,再用ID来调用成员接口
如果你的代码用了v2 API但直接传slug和owner参数,就会触发404错误——因为v2的成员接口不认这两个参数,只认列表ID。
解决步骤
1. 先获取列表ID(针对v2 API)
调用/2/lists/by接口,传入owner名称和slug来获取列表ID。示例curl请求如下:
curl --request GET \ --url 'https://api.twitter.com/2/lists/by?owner_screen_name=journalismnews&slug=uk-national-journalists' \ --header 'Authorization: Bearer YOUR_BEARER_TOKEN'
返回的JSON数据里,data.id字段就是你需要的列表ID。
2. 用列表ID获取成员
拿到ID后,调用/2/lists/:id/members接口获取成员。Python代码示例:
import requests bearer_token = "你的Bearer Token" # 第一步:获取列表ID list_api_url = "https://api.twitter.com/2/lists/by" params = {"owner_screen_name": "journalismnews", "slug": "uk-national-journalists"} headers = {"Authorization": f"Bearer {bearer_token}"} response = requests.get(list_api_url, headers=headers, params=params) if response.status_code != 200: raise Exception(f"获取列表ID失败:{response.status_code} - {response.text}") list_id = response.json()["data"]["id"] # 第二步:获取列表成员 members_api_url = f"https://api.twitter.com/2/lists/{list_id}/members" response = requests.get(members_api_url, headers=headers) if response.status_code != 200: raise Exception(f"获取成员失败:{response.status_code} - {response.text}") # 输出成员名称和用户名 for member in response.json()["data"]: print(f"名称:{member['name']},用户名:@{member['username']}")
如果你用的是v1.1 API
确保请求的端点是https://api.twitter.com/1.1/lists/members.json,并且使用OAuth 1.0a认证(不是Bearer Token),示例curl请求:
curl --request GET \ --url 'https://api.twitter.com/1.1/lists/members.json?owner_screen_name=journalismnews&slug=uk-national-journalists' \ --header 'Authorization: OAuth oauth_consumer_key="你的消费者密钥", oauth_token="你的访问令牌", ...'
额外检查点
- 确认你的Bearer Token/OAuth凭证有效,并且拥有读取列表的权限
- 再次核对slug和owner名称的拼写(虽然你提供的是正确的,但有时候大小写或特殊字符可能引发问题)
内容的提问来源于stack exchange,提问作者user4213837
相关产品推荐
相关产品推荐

