使用Tweepy获取完整推文时遇AttributeError,求解决方案
解决Tweepy启用
tweet_mode='extended'后出现的AttributeError问题 你遇到的问题其实是Tweepy的一个常见特性:当开启tweet_mode='extended'参数来获取完整推文时,返回的Status对象里,存储推文内容的属性从.text变成了.full_text。你代码里还在调用tweet.text,自然会触发“属性不存在”的错误。
基础解决方案
只需要把代码中所有的tweet.text替换成tweet.full_text即可,修改后的循环代码如下:
for tweet in tweepy.Cursor(api.search,q="#PregnantElephant", tweet_mode='extended', count=10000, lang="en", since="2020-04-03").items(): print(tweet.created_at, tweet.full_text) csvWriter.writerow([tweet.created_at, tweet.full_text.encode('utf-8')])
进阶处理:转发推文
如果你的搜索结果里包含转发推文(以RT @用户名开头),有时候你可能需要获取被转发的原推文的完整内容,而不是带转发标记的内容。这时候可以先判断当前推文是否为转发,再获取对应的内容:
for tweet in tweepy.Cursor(api.search,q="#PregnantElephant", tweet_mode='extended', count=10000, lang="en", since="2020-04-03").items(): # 区分转发和原创推文 if hasattr(tweet, 'retweeted_status'): # 转发推文:获取原推文的完整内容 tweet_content = tweet.retweeted_status.full_text else: # 原创推文:直接获取当前推文的完整内容 tweet_content = tweet.full_text print(tweet.created_at, tweet_content) csvWriter.writerow([tweet.created_at, tweet_content.encode('utf-8')])
这样就能确保无论遇到哪种类型的推文,都能正确获取到完整内容了。
内容的提问来源于stack exchange,提问作者PeakyBlinder
相关产品推荐
相关产品推荐

