[您好,我正在尝试使用tweepy抓取某个用户的推文。这是我的代码:
tweets = []
username = 'example'
count = 140 #nb of tweets
try:
# Pulling individual tweets from query
for tweet in api.user_timeline(id=username, count=count, include_rts = False):
# Adding to list that contains all tweets
tweets.append((tweet.text))
except BaseException as e:
print('failed on_status,',str(e))
time.sleep(3)
我遇到的问题是,这些推文最后都以“ ...”结尾,未完成。
我想我已经查看了堆栈溢出和其他地方的所有其他类似问题,但没有任何效果。大多数人都不关心我,因为我不处理转推。
我曾尝试将tweet_mode = 'extended'
和/或tweet.full_text
或tweet._json['extended_tweet']['full_text']
放在不同的组合中。
我没有收到错误消息,但没有任何效果,返回的只是一个空列表。而且看起来文档已经过时了,因为它没有说明'tweet_mode'或'include_rts'参数:
有人设法获得每条推文的全文吗?我真的陷在这个看似简单的问题上,并且正在掉头发,所以我很乐意提供任何建议:D提前谢谢!!
TL; DR:您最有可能遇到限速问题。并使用full_text
属性。
长版:
First,
我遇到的问题是,这些推文最后都以“ ...”结尾未完成。
根据Extended Tweets的Tweepy文档,这是预期的:
兼容模式
...也可以看出Status对象的
text
属性被截断,因为它的后缀是省略号]],空格和缩短的Tweet自永久链接URL。
Wrt
而且看起来文档已经过时,因为它没有说明'tweet_mode'或'include_rts'参数:
他们尚未将其显式添加到每种方法的文档中,但是,他们指定了
tweet_mode
is added as a param:
标准API方法
返回状态对象的任何
tweet_mode
方法都接受新的tweepy.API
参数。此参数的有效值为tweet_mode
和compat
,分别提供兼容模式和扩展模式。默认模式(如果未提供任何参数)是兼容模式。
因此,没有在呼叫中添加extended
的情况下,您是否得到带有部分文本的推文?有了它,您得到的只是一个空列表?如果将其删除并立即重试,请确认您仍然得到一个空白列表。即,一旦获得空列表结果,即使将参数改回有效的列表,也要检查是否仍保持空列表。
基于tweet_mode
-它似乎是一个[[Rate Limiting
[bug #1329 - API.user_timeline sometimes returns an empty list评论Harmon758此API限制会完全按照您所描述的问题来体现自己。
full_text
。所以这行text
应该是
tweets.append((tweet.text))
((您可以跳过多余的附加tweets.append(tweet.full_text)
)
()
以了解处理转发的正确方法:考虑到现有的this example对象和tweepy.API
一条Tweet,以下内容可用于打印该Tweet的全文,如果是Retweet,则可打印该Tweeted Tweet的全文:
id
如果status = api.get_status(id, tweet_mode="extended") try: print(status.retweeted_status.full_text) except AttributeError: # Not a Retweet print(status.full_text)
是转发,则status
可能会被截断。