如何拆分Twitter ID列表为每批100个调用status update API获取指标
Python拆分推文ID批次实现方案
核心思路
利用列表切片将全量ID按每批100个切割,不足100的剩余ID自动归为最后一批,保证所有ID都被覆盖,使用生成器实现可以适配超大ID量的场景,不会占用过多内存。
1. 通用批次拆分函数
def split_into_batches(id_list, batch_size=100): # 按指定步长切割列表,迭代返回每一批次 for i in range(0, len(id_list), batch_size): yield id_list[i:i+batch_size]
如果你的ID存储为单个分隔符拼接的字符串,先转为ID列表:
# 示例为逗号分隔的ID字符串,可根据实际分隔符调整split参数 raw_id_str = "1452367890123456789,1452367890123456790,1452367890123456791" all_tweet_ids = raw_id_str.split(",")
2. 对接API的完整调用示例
import time # 此处替换为你自己的API鉴权初始化逻辑,省略鉴权代码 BATCH_SIZE = 100 # 遍历所有批次发起请求 for batch_index, batch_ids in enumerate(split_into_batches(all_tweet_ids, BATCH_SIZE)): print(f"处理第{batch_index + 1}批,ID数量:{len(batch_ids)}") try: # 调用查询指标的API,传入当前批次的ID列表 api_response = your_twitter_api_client.get_tweet_public_metrics(ids=batch_ids) # 自定义逻辑处理返回的指标数据,比如写入数据库/本地文件 save_metrics_data(api_response) # 根据API速率配额调整延时,避免触发限流 time.sleep(1) except Exception as e: print(f"第{batch_index + 1}批请求失败,错误:{str(e)}") # 可自行添加重试逻辑,比如同一批次最多重试3次
注意事项
- 确保传入的ID为字符串格式,避免大整数溢出导致ID校验不通过
- 最后一批ID数量不足100时函数会自动保留所有剩余ID,无需额外处理
- 可根据自身API的速率配额调整每批请求后的延时时间
内容的提问来源于stack exchange,提问作者Data_Science_110
相关产品推荐
相关产品推荐

