如何用Tweepy或Python模块调用get-favorites-list接口获取用户点赞推文?
嘿,我来帮你搞定用Python获取用户点赞推文的事儿!Tweepy是最顺手的Twitter API Python库,不管你是想用和之前PHP调用的旧接口对应的版本,还是更推荐的新版API,都能轻松实现,下面一步步来:
准备工作
- 首先得有Twitter开发者账号,创建一个应用后拿到对应的密钥:
- 若用旧版v1.1 API:需要API Key、API Secret Key、Access Token、Access Token Secret
- 若用新版v2 API:需要Bearer Token(更简洁,推荐优先用这个)
- 安装Tweepy:在终端里跑
pip install tweepy就行
方法一:对应你之前用的get-favorites-list接口(API v1.1)
这个方法和你之前PHP调用的接口完全对应,Tweepy里直接封装了api.favorites()方法来实现:
import tweepy # 替换成你的真实密钥 API_KEY = '你的API Key' API_SECRET = '你的API Secret Key' ACCESS_TOKEN = '你的Access Token' ACCESS_TOKEN_SECRET = '你的Access Token Secret' # 完成认证 auth = tweepy.OAuthHandler(API_KEY, API_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) # 创建API实例,开启自动处理速率限制 api = tweepy.API(auth, wait_on_rate_limit=True) # 目标用户的用户名(不带@) target_username = 'example_user' # 用Cursor自动分页,获取所有点赞的推文(默认每次请求最多返回200条) try: for favorite_tweet in tweepy.Cursor(api.favorites, screen_name=target_username, count=200).items(): # 打印你需要的推文信息,这里示例输出ID、内容和创建时间 print(f"推文ID: {favorite_tweet.id}") print(f"推文内容: {favorite_tweet.text}") print(f"创建时间: {favorite_tweet.created_at}") print("------------------------") except tweepy.TweepyException as e: print(f"请求出错了: {e}")
小提示
wait_on_rate_limit=True会让Tweepy在触发API速率限制时自动等待,不用你手动处理休眠- 如果只想获取前N条,把
.items()改成.items(N)就行,比如.items(50)只拿前50条
方法二:用Twitter API v2(推荐,v1.1后续可能被弃用)
新版API的设计更简洁灵活,Tweepy提供了Client类来调用,对应的接口是/2/users/{id}/liked_tweets:
import tweepy # 替换成你的Bearer Token BEARER_TOKEN = '你的Bearer Token' # 创建v2客户端,开启自动处理速率限制 client = tweepy.Client(bearer_token=BEARER_TOKEN, wait_on_rate_limit=True) # 先通过用户名获取用户ID(v2 API要求用用户ID而非用户名) target_username = 'example_user' user_response = client.get_user(username=target_username) target_user_id = user_response.data.id # 获取用户点赞的推文,支持自定义返回字段 try: # 第一页数据,max_results最多100条 liked_tweets = client.get_liked_tweets( target_user_id, max_results=100, tweet_fields=['id', 'text', 'created_at'] # 指定要返回的推文字段 ) # 处理第一页内容 for tweet in liked_tweets.data: print(f"推文ID: {tweet.id}") print(f"推文内容: {tweet.text}") print(f"创建时间: {tweet.created_at}") print("------------------------") # 处理分页,获取剩余的推文 next_token = liked_tweets.meta.get('next_token') while next_token: next_page = client.get_liked_tweets( target_user_id, max_results=100, tweet_fields=['id', 'text', 'created_at'], pagination_token=next_token ) for tweet in next_page.data: print(f"推文ID: {tweet.id}") print(f"推文内容: {tweet.text}") print(f"创建时间: {tweet.created_at}") print("------------------------") next_token = next_page.meta.get('next_token') except tweepy.TweepyException as e: print(f"请求出错了: {e}")
小提示
- 你可以通过
tweet_fields、user_fields等参数自定义要获取的信息,比如想拿推文的作者信息,就加expansions=['author_id']和user_fields=['username', 'name'] - 如果已经知道目标用户的ID,可以跳过获取用户ID的步骤,直接传入ID即可
注意事项
- 权限问题:如果目标用户设置了隐私,你只能获取对方公开的点赞内容;如果是获取自己的点赞,只要权限配置正确就没问题
- 速率限制:Twitter API有请求次数上限,Tweepy的
wait_on_rate_limit=True会自动处理等待,避免被限流
内容的提问来源于stack exchange,提问作者teoman
相关产品推荐
相关产品推荐

