如何解决Tweepy Streamer将推文限制为140个字符
在第一次总统辩论期间,我创建了一个tweepy侦听器,以将推文收集到本地MongoDB中,但是我意识到,我收集的推文仅限于140个字符,并且许多在140个字符的限制下被切断。在我的信息流中,我定义了tweet_mode='extended'
,我认为它可以解决此问题,但是,我仍然无法检索超过140个字符的完整推文。下面是我的代码:
auth.set_access_token(twitter_credentials.ACCESS_TOKEN,twitter_credentials.ACCESS_TOKEN_SECRET)
api = tweepy.API(auth,wait_on_rate_limit=True,wait_on_rate_limit_notify=True)
# Create a listener MyListener that streams and stores tweets to a local MongoDB
class MyListener(StreamListener):
def __init__(self):
super().__init__()
self.list_of_tweets = deque([],maxlen=5)
def on_data(self,data):
try:
tweet_text = json.loads(data)
self.list_of_tweets.append(tweet_text)
self.print_list_of_tweets()
db['09292020'].insert_one(tweet_text)
except:
None
def on_error(self,status):
print(status)
def print_list_of_tweets(self):
display.clear_output(wait=True)
for index,tweet_text in enumerate(self.list_of_tweets):
m='{}. {}\n\n'.format(index,tweet_text)
print(m)
debate_stream = Stream(auth,MyListener(),tweet_mode='extended')
debate_stream = debate_stream.filter(track=['insert','debate','keywords','here'])
任何有关如何通过此侦听器获取完整的扩展推文的输入,将不胜感激!
解决方法
tweet_mode=extended
对旧版标准流API无效,因为默认情况下,推文以截断(140)和扩展(280)的形式传递。
因此,您希望像这样设置Stream Listener:
debate_stream = Stream(auth,MyListener())
您应该看到的是更长的Tweets的JSON对象具有一个140个字符的text
字段,但是包含一个名为extended_tweet
的附加字典,而该字典又包含一个full_text
字段带有完整的Tweet文本。
您可以尝试将倒数第二行更改为
debate_stream = Stream(auth,MyListener()).extended_tweet["full_text"]
不确定,是否可以,请尝试一下。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。