我目前非常简单的代码应该使用twitter流API来简单地将特定关键字下的所有推文打印到控制台中。但是,我无法弄清楚如何获取推文的全文而不是截断版本。该计划也在其他地方使用
new_tweets = api.user_timeline(screen_name=username, count=200, tweet_mode='extended')
其中最后一个参数恰好指定了该参数。
这是我目前的代码:
class LiveTweetListener(tweepy.StreamListener):
def on_status(self, status):
try:
print(status.full_text)
except AttributeError:
print(status.text)
def on_error(self, status_code):
if status_code == 420:
print("420")
return False
def start_stream(track):
Listener = LiveTweetListener()
stream = tweepy.Stream(auth=api.auth, listener=LiveTweetListener())
stream.filter(track=track, async=True)
传递tweet_mode ='扩展' with stream = tweepy.Stream似乎无法正常工作
答案 0 :(得分:1)
要使其正常工作,还需要更多的逻辑。首先,将tweet_mode
添加回Stream
,如下所示:
stream = tweepy.Stream(auth=api.auth, listener=LiveTweetListener(), tweet_mode='extended')
接下来,将您的on_status
更改为以下内容:
def on_status(self, status):
try:
if hasattr(status, 'retweeted_status') and hasattr(status.retweeted_status, 'extended_tweet'):
print('retweeted: ' + status.retweeted_status.extended_tweet['full_text'])
if hasattr(status, 'extended_tweet'):
print('extended_tweet: ' + status.extended_tweet['full_text'])
else:
print('text: ' + status.text)
except AttributeError:
print('attribute error: ' + status.text)
这是它起作用的原因:
status.retweeted_tweet.extended_tweet.full_text
将保留文本。status.extended_tweet.full_tweet
中找到文本。status.text
中找到文本。虽然full_text
未显示为extended_tweet
属性,但它是JSON有效负载的一部分(如果可用),这就是为什么您仍然可以通过['full_text']
访问它的原因。