我需要使用tweepy流侦听器迭代tweet,可能每5-10个tweet对其进行批处理,将其存储在一个数组中,并使用tweet数组执行一些逻辑。查找有关如何在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=[]
它遍历tweet对象中的每个项(如贡献者、文本、id、源等),但不迭代tweet本身。
如何用on_data类将tweet批处理为5s或10s,并将它们存储在Python数组中?
发布于 2015-08-27 19:47:10
最好的方法是api.search
方法,方法是获取10个结果,并在搜索方法中使用流的track
参数作为搜索查询q
。在linux上,您可以使用cron
定期自动运行脚本。或者您可以在脚本中启动一个Thread
来实现Thread
。循环。
它对每个项进行迭代,因为对接收到的每个数据流调用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
。
https://stackoverflow.com/questions/32256315
复制相似问题