Python Tweepy截断状态
我使用tweepy挖掘用户时间线数据,在理解以下内容时遇到了一些困难:Python Tweepy截断状态,python,tweepy,Python,Tweepy,我使用tweepy挖掘用户时间线数据,在理解以下内容时遇到了一些困难: “retweeted”和“truncated”属性所指的内容是否相同(即状态文本超过140个字符) 如果没有,有什么区别 我遇到了一个stackoverflow问题,有人问如何检索由于长度超过140个字符而被“切碎”的状态文本。它建议在_json字典中有一个retweeted属性,如果是这样,该属性将为true,并且完整的状态文本将位于status->retweeted_status->text下。但是,我没有找到它,唯一的
提前谢谢你的帮助 是否“retweetd”和“truncated”属性指的是同一事物(即状态文本超过140个字符)?如果没有,区别是什么? 不,推特不仅可以在转发之后被截断,而且在回复或提及之后也可以被截断(参见下面的示例,它不是转发)。如果是这种情况,“截断”将设置为“真”(“转发”将为真或假)。如果tweet没有被截断,因为它的大小远远小于140个字符,那么“retweetd”也可能等于True,“truncated”也可能等于False 建议在_json字典中有一个retweetd属性,如果是这样,则该属性将为true,并且完整的状态文本将位于status->retweetd_status->text下。 只有当推特是真正的转发时,这才是真的。实际上,如果转发的_状态来自另一条被截断的tweet,那么它本身可能被截断。最好的方法是使用Tweepy中的
tweet\u mode='extended'
参数来检索全文(遗憾的是Tweepy文档中没有记录)。例如:
(未扩展)
@tousuncotefoot@equipedefrance@CreditAgricole@AntoGriezmann@KMbappe@layvinkurzawa@Umatisam J'ai jamais vue d
(扩展)
@tousuncotefoot@equipedefrance@CreditAgricole@AntoGriezmann@KMbappe@layvinkurzawa@UmtitiSam J'ai jamais vue de match de foot and cela ferait un beau cadeau pour mon copain 关于问题3)
下面是一种从Tweepy流侦听器访问扩展状态文本的方法,假设tweet超过140个字符(在这种情况下,status对象将具有扩展的_tweet字典)。如果tweet不超过140个字符,则只需像往常一样获取状态文本:
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
try:
text = status.extended_tweet["full_text"]
except AttributeError:
text = status.text
我也因为这个问题而烦恼 当tweet被转发时,在.json文件中有两个“全文”标记。通过调用“retweet\u status”标签可以提取真正的全文。解决方案如下:
for tweet in tweepy.Cursor(api.search, q = "social", tweet_mode='extended',
wait_on_rate_limit = True, wait_on_rate_limit_notify = True, include_entities=True).items(10):
try:
print tweet.retweet.im_self._json['retweeted_status']['full_text']
except:
print tweet.retweet.im_self._json['full_text']
对我来说,最简单的方法就是获取状态并搜索转发的全文
status = api.get_status(id, tweet_mode="extended")
try:
print(status.retweeted_status.full_text)
except AttributeError: # Not a Retweet
print(status.full_text)
这甚至在搜索中也有效
tweets=[]
for tweet in api.search(q=keyword, lang="en", count=count, tweet_mode='extended'):
try:
tweets.append(tweet.retweeted_status.full_text)
except AttributeError: # Not a Retweet
tweets.append(tweet.full_text)
谢谢你的回答。我已经试过了,正如你所解释的,这正是我所需要的。谢谢:)+1来自我。我很高兴它有用!:)
status = api.get_status(id, tweet_mode="extended")
try:
print(status.retweeted_status.full_text)
except AttributeError: # Not a Retweet
print(status.full_text)
tweets=[]
for tweet in api.search(q=keyword, lang="en", count=count, tweet_mode='extended'):
try:
tweets.append(tweet.retweeted_status.full_text)
except AttributeError: # Not a Retweet
tweets.append(tweet.full_text)