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
。
我需要使用 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
。