使用 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")
当推文是转推的一部分(因此被截断)时,将添加 ...
(省略号)。 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 !!
我是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")
当推文是转推的一部分(因此被截断)时,将添加 ...
(省略号)。 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 !!