如何用Tweepy获取特定地理位置推文发布者的昵称或用户ID?
解决Tweepy获取地理推文发布者昵称/用户ID的问题
我来帮你搞定这个问题!你设置show_user="True"没生效,是因为这个参数在当前版本的Tweepy里已经不是获取用户信息的正确方式啦。实际上,通过api.search返回的每条推文对象,本身就自带一个user属性,里面包含了发布者的所有核心信息,包括你需要的昵称和用户ID。
问题原因
show_user是旧版Twitter API的参数,现在Tweepy对接的新版本API默认就会返回推文关联的用户对象,所以这个参数已经不需要设置了(就算设置了也不会起到你想要的效果)。另外你代码里把布尔值True写成了字符串"True",这也是一个小细节问题,但核心还是参数本身的适用性问题。
正确的实现代码
你只需要在遍历获取到的推文时,直接从推文的user属性里提取信息就行,修改后的代码示例如下:
import tweepy # 先完成Tweepy认证步骤(请替换成你的密钥信息) # auth = tweepy.OAuthHandler(consumer_key, consumer_secret) # auth.set_access_token(access_token, access_token_secret) # api = tweepy.API(auth) # 发起地理推文搜索,无需设置show_user参数 public_tweets = tweepy.Cursor(api.search, rpp=100, geocode="44.269493,63.341332,5km", since="2018-05-01", tweet_mode="extended").items() # 遍历推文并提取发布者信息 for tweet in public_tweets: # 获取发布者昵称(screen-name) screen_name = tweet.user.screen_name # 获取用户ID(UserId) user_id = tweet.user.id # 获取完整推文内容(因为设置了tweet_mode="extended") full_tweet_content = tweet.full_text print(f"发布者昵称: @{screen_name}") print(f"用户ID: {user_id}") print(f"推文内容: {full_tweet_content}\n")
关键说明
tweet.user是一个完整的用户对象,除了screen_name和id,还包含用户头像、个人简介、关注数等其他信息,你可以根据需求自由提取。- 确保你使用的是较新版本的Tweepy(建议v4.x及以上),旧版本可能在API响应结构上存在差异。
- 你的
geocode参数格式是正确的,遵循纬度,经度,半径的规则,半径支持km(千米)或mi(英里)单位。
内容的提问来源于stack exchange,提问作者ahmad iqbal
相关产品推荐
相关产品推荐

