Como salvar tweets de streaming em json via tweepy?

Estou aprendendo Python há alguns meses por meio de cursos on-line e gostaria de aprofundar meu aprendizado em um mini-projeto do mundo real.

Para este projeto, eu gostaria de coletar tweets da API de streaming do twitter e armazená-los no formato json (embora você possa optar por salvar apenas as informações principais, como status.text, status.id, fui avisado de que a melhor maneira fazer isso é salvar todos os dados e fazer o processamento depois). No entanto, com a adição de on_data (), o código deixa de funcionar. Alguém poderia ajudar por favor? Também estou aberto a sugestões sobre a melhor maneira de armazenar / processar tweets! Meu objetivo final é poder rastrear tweets com base em variáveis demográficas (por exemplo, país, idade do perfil do usuário etc.) e no sentimento de determinadas marcas (por exemplo, Apple, HTC, Samsung).

Além disso, também gostaria de tentar filtrar os tweets por local e por palavras-chave. Eu adaptei o código deComo adicionar um filtro de localização ao módulo tweepy separadamente. No entanto, embora funcione quando há poucas palavras-chave, para quando o número de palavras-chave aumenta. Presumo que meu código seja ineficiente. Existe uma maneira melhor de fazer isso?

### code to save tweets in json###
import sys
import tweepy
import json

consumer_key=" "
consumer_secret=" "
access_key = " "
access_secret = " "

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
file = open('today.txt', 'a')

class CustomStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        print status.text

    def on_data(self, data):
        json_data = json.loads(data)
        file.write(str(json_data))

    def on_error(self, status_code):
        print >> sys.stderr, 'Encountered error with status code:', status_code
        return True # Don't kill the stream

    def on_timeout(self):
        print >> sys.stderr, 'Timeout...'
        return True # Don't kill the stream

sapi = tweepy.streaming.Stream(auth, CustomStreamListener())
sapi.filter(track=['twitter'])

questionAnswers(3)

yourAnswerToTheQuestion