使用Twitter API批量获取多组推文ID及用户名对应全部回复的问题
基于Tweepy批量获取指定推文对应回复的实现方案
原代码逻辑说明
现有代码的核心逻辑是遍历绑定的<目标推文ID, 推文作者用户名>组合,搜索所有@对应作者的推文后匹配回复关联ID,筛选符合条件的回复存入数组,逻辑本身可正常运行,仅存在可优化空间:
- 缺少异常捕获,API请求报错时会直接中断运行
- 未提前初始化存储数组,空匹配场景下调用replies会抛出未定义错误
hasattr加属性判断的写法可以简化,减少冗余代码
优化后代码
import tweepy import time # 提前初始化回复存储数组 replies = [] # 单用户最多拉取的推文数量,标准API单页最大返回100条,可根据需求调整 numtweet = 100 try: for target_tweet_id, target_username in zip(tweet_ids, usernames): # 拼接搜索查询条件 search_query = f"to:{target_username}" for tweet in tweepy.Cursor(api.search_tweets, q=search_query).items(numtweet): # 直接校验回复关联的推文ID是否匹配目标 if getattr(tweet, 'in_reply_to_status_id_str', None) == target_tweet_id: replies.append(tweet) # 每查询完一个用户加1秒间隔,避免触发速率限制 time.sleep(1) # 打印所有匹配到的回复内容 for tweet in replies: print(tweet.text) except tweepy.TweepyException as e: print(f"接口请求异常:{e}")
注意事项
- API权限限制:Twitter标准免费API仅支持拉取最近7天内的公开推文,需要获取更早时间的回复需要申请学术或企业级API权限
- 速率限制规避:如果批量查询的组合数量较多,可适当延长
sleep的间隔时长,避免触发API的请求频次限制 - 数据完整性:如果目标推文的回复量较大,可以调大
numtweet的取值,避免漏掉匹配的回复
内容的提问来源于stack exchange,提问作者sawsan alzubi
相关产品推荐
相关产品推荐

