我需要使用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数组中?
答案 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
。