调用Twitter流API遇404错误,请求排查解决方案
Twitter流API 404错误的排查与解决
问题重现
代码实现:
def start_streaming_tweets(self, search_term): self.filter(track=search_term, stall_warnings=True, languages=["en"]) if __name__ == '__main__': twitter_stream = TweetListener(consumerKey, consumerSecret, accessToken, accessTokenSecret) twitter_stream.start_streaming_tweets(search_term)
(注:原代码末尾存在多余双引号,属于语法错误,需先修正)
运行时出现错误:
Stream encountered HTTP error: 404
HTTP error response text:
Stream encountered HTTP error: 404
错误原因分析
- API版本弃用:Twitter已正式关停v1.1版本的部分Streaming API端点,若仍使用旧库调用这些失效接口,会直接返回404。
- 库版本不兼容:低版本的Twitter SDK(如tweepy < 4.0)未适配v2 API,内部调用的仍是已废弃的v1.1流接口。
- 认证信息混用:v1.1与v2 API的认证方式不同,若用v2的Bearer Token调用v1.1接口,或用v1.1的密钥调用v2接口,可能触发服务端返回异常的404状态码。
- 代码语法错误:原代码末尾的多余双引号会导致语法报错,虽不是404的直接原因,但需优先修正以确保代码可正常执行。
解决办法
升级SDK到适配v2 API的版本
以tweepy为例,执行命令更新到最新版本:pip install --upgrade tweepy切换到Twitter API v2的过滤流实现
v2 API使用StreamingClient替代旧的StreamListener,且需使用Bearer Token认证,示例代码如下:import tweepy class TweetListener(tweepy.StreamingClient): def on_tweet(self, tweet): # 自定义处理推文逻辑 print(tweet.text) if __name__ == '__main__': bearer_token = "你的v2 API Bearer Token" search_term = "your_search_keyword" twitter_stream = TweetListener(bearer_token) # 添加流过滤规则 rule = tweepy.StreamRule(search_term) twitter_stream.add_rules(rule) # 启动流,可指定需要返回的字段 twitter_stream.filter(tweet_fields=["created_at", "author_id"], languages=["en"])确认认证信息匹配API版本
- v1.1 API:使用consumer key、consumer secret、access token、access token secret
- v2 API:使用Bearer Token(需在Twitter开发者平台生成)
修正代码语法错误
移除原代码中twitter_stream.start_streaming_tweets(search_term)末尾的多余双引号。
内容的提问来源于stack exchange,提问作者iheb akermi
相关产品推荐
相关产品推荐

