使用tweepy调用search_tweets时出现Unexpected parameter: start_time错误如何解决
问题原因
你调用的tweepy.API.search_tweets封装的是Twitter API v1.1的标准搜索接口,该接口本身不支持start_time参数,该参数是Twitter API v2专属的时间过滤参数,因此传入后会抛出未知参数报错。
解决方案
- 方案1:继续使用v1.1版本API
v1.1标准搜索仅支持until参数(格式为YYYY-MM-DD)筛选指定日期之前的推文,且仅能查询最近7天内的内容,无法直接指定开始时间。如果需要实现按开始时间过滤,可先获取接口返回的所有推文,再根据推文自带的created_at发布时间字段自行做二次筛选。
示例修改代码:auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth, wait_on_rate_limit=True) # 移除start_time参数,如需限制结束日期可增加until参数,例:until='2021-03-08' tweets = tweepy.Cursor(api.search_tweets, q=words, lang="en", tweet_mode='extended').items(25) # 二次过滤示例 filtered_tweets = [] from datetime import datetime start_time = datetime.strptime('2021-03-01T00:00:00Z', '%Y-%m-%dT%H:%M:%SZ') for tweet in tweets: if tweet.created_at >= start_time: filtered_tweets.append(tweet) - 方案2:切换使用Twitter API v2接口
v2接口原生支持start_time、end_time参数,如需查询更早的历史推文需提前申请对应的API权限。
示例修改代码:# 初始化v2客户端,需提前准备好Bearer Token client = tweepy.Client(bearer_token=your_bearer_token, wait_on_rate_limit=True) # v2接口使用Paginator分页 tweets = tweepy.Paginator( client.search_recent_tweets, query=words, start_time='2021-03-01T00:00:00Z', tweet_fields=['created_at', 'lang', 'public_metrics'], max_results=25 ).flatten(25)
内容的提问来源于stack exchange,提问作者kkgarg
相关产品推荐
相关产品推荐

