我用tweepy挖掘用户时间线数据,并且在理解以下内容方面遇到了一些困难:
提前感谢您的帮助。
答案 0 :(得分:9)
'转推'和'截断'属性是指同一件事(即超过140个字符的状态文字)?如果没有,有什么区别?
不,推文不仅可以在转发(转发)之后被截断,而且也可以在回复或提及之后被截断(请参阅下面的示例,而不是转推)。如果是这种情况,'truncated'将被设置为'True'(并且'转推'将为True或False)。如果推文没有被截断,因为它的大小远低于140个字符,也可能将'转推'等于True,而'截断'等于False。
它表明_json字典中有一个转推属性,如果是这种情况则为真,并且完整状态文本将处于status-&gt; retweeted_status-&gt; text。 < / p>
只有当推文是真正的转发时才是这样。实际上,如果retweeted_status来自另一个截断的推文,它本身就会被截断。最好的方法是使用Tweepy中的tweet_mode='extended'
参数来检索全文(遗憾的是,未在Tweepy文档中记录)。例如:
(未延期)
print api.get_status('862328512405004288')._json['text']
@tousuncotefoot @equipedefrance @CreditAgricole @AntoGriezmann @KMbappe @layvinkurzawa @UmtitiSam J'ai jamais vue d ... https://tco/kALZ2ki9Vc
(扩展)
print api.get_status('862328512405004288', tweet_mode='extended')._json['full_text']
@tousuncotefoot @equipedefrance @CreditAgricole @AntoGriezmann @KMbappe @layvinkurzawa @UmtitiSam J'ai jamais vue de match de foot et cela ferait un beau cadeau pour mon copain !!
答案 1 :(得分:5)
关于问题3)
下面是一种从Tweepy流监听器访问扩展状态文本的方法,假设推文超过140个字符(在这种情况下,状态对象将具有extended_tweet字典)。如果推文不超过140个字符,那么只需像往常一样获取状态文本:
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
try:
text = status.extended_tweet["full_text"]
except AttributeError:
text = status.text
答案 2 :(得分:2)
由于这个问题,我也感到困扰。
转发推文时,.json文件中有两个“ full_text”标签。真正的全文可以通过调用“ retweet_status”标签来提取。解决方法如下:
StreamingResponse
答案 3 :(得分: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)