Python:使用 tweepy 流侦听器在数组中批处理推文

Python: Batching tweets in an array using tweepy stream listener

我需要使用 tweepy 流侦听器迭代推文,可能每 5-10 条推文对其进行批处理,将其存储在数组中并使用推文数组执行一些逻辑。寻求有关如何使用 streamlistener class 下的 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 class 在 5 秒或 10 秒内批量处理推文并将它们存储在 Python 数组中?

嗯,最好的方法是 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