Tweepy Tracking Multiple Terms
Estou fazendo análise de conteúdo em tweets. Estou usando o tweepy para retornar tweets que correspondem a determinados termos e depois escrevendo N quantidade de tweets em um arquivo CSv para análise. Criar os arquivos e obter dados não é um problema, mas gostaria de reduzir o tempo de coleta de dados. Atualmente, estou iterando através de uma lista de termos de um arquivo. Quando o N é alcançado (por exemplo, 500 tweets), ele passa para o próximo termo do filtro.
Gostaria de inserir todos os meus termos (menos de 400) em uma única variável e todos os resultados correspondentes. Isso também funciona. O que não consigo obter é um valor de retorno do twitter sobre o termo que corresponde ao status.
class CustomStreamListener(tweepy.StreamListener):
def __init__(self, output_file, api=None):
super(CustomStreamListener, self).__init__()
self.num_tweets = 0
self.output_file = output_file
def on_status(self, status):
cleaned = status.text.replace('\'','').replace('&','').replace('>','').replace(',','').replace("\n",'')
self.num_tweets = self.num_tweets + 1
if self.num_tweets < 500:
self.output_file.write(topicName + ',' + status.user.location.encode("UTF-8") + ',' + cleaned.encode("UTF-8") + "\n")
print ("capturing tweet number " + str(self.num_tweets) + " for search term: " + topicName)
return True
else:
return False
sys.exit("terminating")
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
with open('termList.txt', 'r') as f:
topics = [line.strip() for line in f]
for topicName in topics:
stamp = datetime.datetime.now().strftime(topicName + '-%Y-%m-%d-%H%M%S')
with open(stamp + '.csv', 'w+') as topicFile:
sapi = tweepy.streaming.Stream(auth, CustomStreamListener(topicFile))
sapi.filter(track=[topicName])
Especificamente, meu problema é esse. Como obtenho o que corresponde se a variável de faixa tiver várias entradas? Também declararei que sou relativamente novo em python e tweepy.
Agradecemos antecipadamente por qualquer conselho e assistência!