【发布时间】:2014-08-31 01:16:03
【问题描述】:
我正在使用 Tweepy 来捕获基于标签 #WorldCup 的流式推文,如下面的代码所示。它按预期工作。
class StdOutListener(StreamListener):
''' Handles data received from the stream. '''
def on_status(self, status):
# Prints the text of the tweet
print('Tweet text: ' + status.text)
# There are many options in the status object,
# hashtags can be very easily accessed.
for hashtag in status.entries['hashtags']:
print(hashtag['text'])
return true
def on_error(self, status_code):
print('Got an error with status code: ' + str(status_code))
return True # To continue listening
def on_timeout(self):
print('Timeout...')
return True # To continue listening
if __name__ == '__main__':
listener = StdOutListener()
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, listener)
stream.filter(follow=[38744894], track=['#WorldCup'])
因为现在这是一个热门话题标签,所以搜索不会花费太长时间来捕获 Tweepy 让您在一次交易中获得的最大数量的推文。但是,如果我要在#StackOverflow 上进行搜索,它可能会慢得多,因此,我想要一种杀死流的方法。我可以在几个参数上执行此操作,例如在 100 条推文后停止、在 3 分钟后停止、在文本输出文件达到 150 行后等。我知道套接字超时时间不用于实现此目的。
我看过这个类似的问题:
Tweepy Streaming - Stop collecting tweets at x amount
但是,它似乎没有使用流 API。它收集的数据也很杂乱,而这个文本输出是干净的。
除了键盘中断之外,任何人都可以根据一些用户输入参数提出一种停止 Tweepy 的方法(在此方法中使用流时)?
谢谢
【问题讨论】:
-
我对 Python 的 TwitterAPI 库有同样的问题
标签: python twitter streaming tweepy duration