如何用Tweepy获取特定用户含指定关键词的全部推文?代码修复求助
修复无法获取全部目标推文的方案
1. 解决API时间范围与分页限制
Twitter(X)的标准搜索API默认只能抓取最近7天的推文,而且单次请求有返回数量上限。要获取更多内容,得通过分页循环逐步拉取更早的推文:
def get_tweet_keyword_from_user(keyword, user): all_tweets = [] max_id = None while True: query = f"{keyword} from:{user}" # 每次请求最多取100条,用max_id控制下一页的起始位置 tweets_cursor = tw.Cursor(api.search_tweets, q=query, tweet_mode='extended', count=100, max_id=max_id).items(100) current_batch = [] for tweet in tweets_cursor: current_batch.append(tweet.full_text) # 更新max_id为当前推文ID减1,确保下一页取到更早的内容 max_id = tweet.id - 1 if not current_batch: break # 没有更多推文时停止循环 all_tweets.extend(current_batch) print(f"累计获取{len(all_tweets)}条推文") # 输出所有结果 for text in all_tweets: print(text) return all_tweets
2. 检查API权限与额度
- 免费版API有调用次数限制,超出后会减少返回结果,确认你的密钥额度足够
- 如果目标用户设置了推文私有(受保护),你必须先关注对方并获得授权,否则无法抓取其内容
3. 优化关键词匹配规则
原代码的关键词是简单的全文匹配,要是需要更精准或灵活的匹配,调整查询语法:
- 精确匹配短语:用双引号包裹关键词,比如
query = f'"{keyword}" from:{user}' - 匹配多个变体:用
OR连接,比如query = f"{keyword} OR {keyword.upper()} from:{user}"
4. 注意API版本差异
如果你用的是Tweepy v4+,要确认已经适配了X API的最新规则,部分旧接口参数可能已经失效
内容的提问来源于stack exchange,提问作者fy23
相关产品推荐
相关产品推荐

