Python:使用tweepy流监听器

时间:2015-08-27 17:55:16

标签: python tweepy

我需要使用tweepy流监听器迭代推文,可能每5-10个推文批量处理它们,将它存储在数组中并使用推文数组执行一些逻辑。寻求有关如何使用streamlistener类下的on_data对象批处理它们的帮助。

class stdoutlistener(StreamListener):
    def on_data(self, data):
         data = json.loads(data)
         print data

if i do something like this:
    i = 0
    records=[]
    while i<5:
         for item in data:
             records.append(item)
             i = i+1
    <do some logic>         
    records=[]         

它迭代推文对象中的每个项目(如贡献者,文本,id,源等),但不会遍历推文本身。

如何使用on_data类在5s或10s中批量推文并将它们存储在Python数组中?

1 个答案:

答案 0 :(得分:0)

嗯,最好的方法是使用api.search方法,提取10个结果,并在搜索方法中使用您的流的track参数作为搜索查询q 。在Linux上,您可以使用cron定期自动运行脚本。或者您可以在脚本中启动Thread来实施do-something - sleep - do-something - sleep .....循环。

它正在迭代每个项目,因为为流式传输的每个数据调用on_data方法,而不是数据收集(这将是一个列表)。

这是解决方法

container = []
class stdoutlistener(StreamListener):
    def on_data(self, data):
        global container
        container.append(data)
        if len(container) > 10:
            for each in container:
                # Perform operation on each
            container = []

我已创建了一个变量容器,并继续将data从流中追加到它,如果有超过10个元素,则应执行操作,然后清空container