使用tweepy
python库,如何在x秒后停止发送推文?
来自StreamListener
的{{1}}会持续收集数据,直到用户手动关闭程序为止。但是,我只想收集用户定义的时间间隔的推文。
答案 0 :(得分:4)
有多种方法可以解决此问题 - 多线程和创建用户定义的tweepy.streaming
。我将强调解决这个问题的一种方法,并解释为什么我认为这是最好的。
除非您想要覆盖内置功能(用于存储推文),否则无需创建任何用户定义的类实例
StreamListener
这是一个简单而优雅的解决方案,适用于所有流。没有(复杂的)多线程涉及。
我在stackoverflow和许多其他网站上发现的另一种常见方法是在用户定义的import tweepy
import time
from tweepy import Stream, StreamListener, OAuthHandler
'''Authenticate user'''
CONSUMER_KEY = 'xxxxxx'
CONSUMER_SECRET = 'xxxxxx'
auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
'''How long do you want to stream tweets (in seconds)'''
runtime = 60 #this means one minute
'''Start streaming'''
twitterstream = Stream(auth, StreamListener())
twitterstream.filter(track=['twitter'], async=True) #apply any filter you want
time.sleep(runtime) #halts the control for runtime seconds
twitterstream.disconnect() #disconnect the stream and stop streaming
内启动计时器,并检查StreamListener
方法中是否超出了时间限制。虽然这对于高容量流来说是一个巧妙的黑客攻击,但它只会在流收到推文时检查超过的时间限制。如果您正在播放低音量流(当没有多少人使用您应用的过滤器发推文时),这可能是一个非常大的问题。