如何用Python调用Twitter API 核查大量用户是否关注指定目标用户列表
高效实现方案:反转查询方向,拉取目标用户粉丝列表匹配
核心逻辑
你之前的方案是从6000个待核查用户维度发起查询,需要数千次接口调用才可以覆盖所有用户,天然会触发速率限制。反转查询逻辑后,仅需要处理20个目标用户的粉丝数据,请求量直接下降两个数量级:
- 待核查用户A关注了目标用户B = B的粉丝列表中存在A
- 仅需要拉取20个目标用户的全量粉丝,和你手里的6000个待核查用户名单做匹配即可得出结果
具体落地步骤
- 第一步:优先将你手里的6000个待核查用户名转换为用户ID,调用
GET users/lookup接口,单次请求最多支持查询100个用户,6000个用户仅需要60次请求即可完成ID转换,转换后将所有ID存入哈希集合(比如Python中的set结构),匹配时时间复杂度为O(1) - 第二步:调用
GET followers/ids接口拉取20个目标用户的粉丝ID列表,该接口单次请求最多返回1000个粉丝ID,远高于拉取用户详情的接口效率 - 第三步:边拉取粉丝ID边和待核查ID集合做匹配,命中就标记该待核查用户满足「关注了任意目标用户」的条件,如果你需要的只是「是否有任意关注」的结果,不需要完整拉取所有粉丝,6000个待核查用户全部命中后可以直接终止拉取,进一步节省请求量
- 第四步:所有目标用户的粉丝列表遍历完成后,输出所有标记命中的用户即可
速率控制优化
- 严格按接口速率限制做请求间隔控制,比如每15分钟最多发起15次请求的限制下,可以每间隔60秒发起1次请求,避免触发限流惩罚
- 如果部分目标用户的粉丝量超过百万级,可以错开不同目标用户的请求时间,把请求均匀分摊到多个速率窗口中,避免短时间请求量超限
内容的提问来源于stack exchange,提问作者user17065241
相关产品推荐
相关产品推荐

