使用Tweepy的search_30_day无返回结果,请求协助排查问题
让我帮你梳理下可能导致search_30_day没有返回结果的几个关键原因:
1. 日期范围完全超出30天搜索的覆盖范围
这大概率是最核心的问题!search_30_day从名字就能看出来,它只能检索最近30天内发布的推文,而你设置的fromDate=202012300000是2020年的日期,远远超出了这个接口的时间范围,自然找不到任何数据。
你可以把fromDate调整为最近30天内的日期(格式是YYYYMMDDHHMM),比如如果今天是2024年5月20日,就设置成202404200000;或者干脆去掉fromDate参数,让接口默认检索最近30天的内容。
2. 地理搜索语法的细节验证
虽然你的point_radius写法看起来大致正确,但Twitter Premium搜索的地理过滤语法有严格要求:
- 纬度和经度必须是数字格式,半径要明确带单位(仅支持
km或mi) - 参数之间用空格分隔,不要加逗号
你可以尝试把query调整为更规范的格式(其实你的写法已经符合,但如果还是不行,可以检查是否有多余的空格或符号):
query='point_radius:[60.00 10.00 40km]'
3. 环境名称(environment_name)配置错误
你用的environment_name='dev',需要确认这个环境是否在你的Twitter开发者后台正确创建并绑定了30天搜索的Premium产品:
- 登录Twitter开发者平台,进入对应项目的「Premium」板块
- 检查30天搜索环境的名称是否和代码里的一致,拼写错误会导致接口无法定位到你的搜索环境
4. 账号没有Premium API访问权限
普通的免费Twitter开发者账号是无法使用search_30_day这类Premium接口的,你需要确认:
- 你的账号已经申请并通过了Premium API的访问权限
- 你的API密钥对关联的项目拥有30天搜索的权限
修正后的示例代码
结合上面的点,调整后的代码大概是这样:
import tweepy consumer_key = '' consumer_secret = '' access_token = '' access_token_secret = '' OAUTH_KEYS = {'consumer_key': consumer_key, 'consumer_secret': consumer_secret, 'access_token_key': access_token, 'access_token_secret': access_token_secret} auth = tweepy.OAuthHandler(OAUTH_KEYS['consumer_key'], OAUTH_KEYS['consumer_secret']) api = tweepy.API(auth) # 调整为最近30天内的日期,或者直接去掉fromDate参数 premiumTweet = api.search_30_day( environment_name='dev', query='point_radius:[60.00 10.00 40km]', # fromDate=202404200000, # 替换为最近30天的日期 maxResults=100 ) how_many_tweets = 0 for tweet in premiumTweet: how_many_tweets += 1 print(how_many_tweets)
内容的提问来源于stack exchange,提问作者Mathew Daniels
相关产品推荐
相关产品推荐

