使用 tweepy 保存推文的全文

Save full text of a tweet with tweepy

我是python的新手程序员。我在尝试使用 tweepy 提取一系列推文的文本并将其保存到文本文件时遇到麻烦(我省略了身份验证和其他内容)

search = api.search("hello", count=10)

textlist=[]

for i in range(0,len(search)):
    textlist.append( search[i].text.replace('\n', '' ) )

f = open('temp.txt', 'w')
for i in range(0,len(idlist)):
    f.write(textlist[i].encode('utf-8') + '\n')

但在一些长推文中,末尾的文本被截断,每个字符串的末尾出现一个三点字符“...”,所以有时我会丢失链接或主题标签。我怎样才能避免这种情况?

这是转发的默认行为。您可以在retweeted_status对象下访问全文。

Twitter API 关于更改的实体部分:

https://dev.twitter.com/overview/api/entities-in-twitter-objects#retweets

Twitter API 文档(查找 "truncated")

https://dev.twitter.com/overview/api/tweets

当推文是转推的一部分(因此被截断)时,将添加 ...(省略号)。 documentation:

中提到了这一点

Indicates whether the value of the text parameter was truncated, for example, as a result of a retweet exceeding the 140 character Tweet length. Truncated text will end in ellipsis, like this ...

没有办法避免这种情况,除非你获取每条单独的推文,然后搜索它的任何转发并构建完整的时间线(显然这对于​​简单搜索来说不实用,如果你是,你可以这样做获取特定句柄的时间线)。

您还可以简化代码:

results = api.search('hello', count=10)

with open('temp.txt', 'w') as f:
   for tweet in results:
       f.write('{}\n'.format(tweet.decode('utf-8')))

使用 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 !!