使用Tweepy编写推特随机评论挑选脚本遇AttributeError问题求助
问题解决思路及修正代码
首先,你遇到的几个问题根源如下:
- Tweepy的
API对象没有comments方法,这是第一个错误的直接原因;旧版search方法已被废弃,当前对应方法为search_tweets; - 免费版Twitter API权限不足以获取推文评论,必须申请**Elevated(进阶)**权限才能使用搜索接口获取回复。
修正后的代码
import random import tweepy # 认证信息 consumer_key = 'xxx' consumer_secret = 'xxx' access_token = 'xxx' access_token_secret = 'xxx' # 修正认证方式:OAuthHandler只传consumer密钥,再单独设置access token auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) # 开启速率限制等待,避免触发API限制 api = tweepy.API(auth, wait_on_rate_limit=True) def get_tweet_replies(tweet_id, tweet_author_username): """获取指定推文的所有评论""" replies = [] # 搜索条件:回复目标作者+针对目标推文的回复 search_query = f"to:{tweet_author_username} in_reply_to_tweet_id:{tweet_id}" # 使用Cursor遍历所有结果,tweet_mode='extended'获取完整评论内容 for tweet in tweepy.Cursor(api.search_tweets, q=search_query, tweet_mode='extended').items(): # 确保是针对目标推文的回复 if tweet.in_reply_to_status_id_str == tweet_id: replies.append(tweet) return replies # 替换为实际推文ID和原推文作者的用户名(不带@) tweet_id = "xxx" tweet_author = "xxx" # 替换为要过滤的用户名(不带@) target_user = "xxx" # 获取所有评论 comments = get_tweet_replies(tweet_id, tweet_author) # 过滤指定用户的评论(转小写避免大小写匹配问题) filtered_comments = [c for c in comments if c.user.screen_name.lower() == target_user.lower()] if filtered_comments: winner = random.choice(filtered_comments) # 用full_text获取完整评论(因启用了tweet_mode='extended') print(f"Der Gewinner ist @{winner.user.screen_name} mit dem Kommentar: {winner.full_text}") else: print("Keine Kommentare Gefunden.")
关键注意事项
- 权限要求:必须在Twitter开发者平台申请Elevated权限,免费版API无法调用
search_tweets接口获取推文回复,会返回权限不足错误; - 认证格式:原代码中
OAuthHandler参数传递错误,正确方式是先传入consumer密钥,再通过set_access_token设置access token; - 评论完整性:启用
tweet_mode='extended'才能获取超过140字符的完整评论,否则会拿到截断文本; - 匹配容错:过滤用户名时转成小写比较,避免因大小写不一致漏判目标用户的评论。
内容的提问来源于stack exchange,提问作者Shakesbeer
相关产品推荐
相关产品推荐

