O Twitter é amplamente utilizado para fins de pesquisa (centífica e de mercado), especialmente por possuir uma API muito versátil que permite simular basicamente qualquer ação possível do usuário, além da possibilidade de escuta na API de Streaming para coletar dados sobre termos específicos. Dentre as diversas bibliotecas disponíveis para usar a API do Twitter, a Tweepy, implementada em Python, é muito bem aceita pela maior parte dos desenvolvedores por ser eficiente e de fácil utilização. A forma mais fácil de instalar o Tweepy é através do PIP (gerenciador de pacotes Python):
1 |
sudo pip install tweepy |
Se ainda não tiver o PIP instalado, pode obtê-lo nas distros Linux pelo apt-get:
1 |
sudo apt-get install python-pip |
O próximo passo é registrar sua aplicação na plataforma de desenvolvimento do Twitter. Após registrar sua aplicação, será necessário copiar 4 informações da mesma: a consumer key, o consumer secret, o access token e o access token secret. O código possui as declarações para essas informações na seção de autenticação.
Onde encontrar as chaves de autenticação
Essa é a única alteração a ser feita no código para torná-lo operacional. Todavia, o método on_status é o método que manipula os objetos de tweets que são recebidos pelo streaming. No exemplo, apenas para fins de demonstração, o método recupera o nome do autor e o texto do tweet, bem como favorita o mesmo. Poderia também persisti-lo em um banco de dados, por exemplo, ou realizar qualquer outra ação de acordo com a necessidade do programador.
O CÓDIGO-FONTE: TWEEPY
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import tweepy # Pegando a consulta por parâmetro consulta = sys.argv[1:] #Autenticações consumer_key = '' consumer_secret = '' access_token = '' access_token_secret = '' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) #Coletando tweets class CustomStreamListener(tweepy.StreamListener): def on_status(self, tweet): #Quando receber algum status, esta função pode manipular o objeto tweet. Exemplos: print tweet.author.screen_name print tweet.text.encode('utf-8') api.create_favorite(tweet.id) return True def on_error(self, status_code): print "Erro com o código:", status_code return True # Não mata o coletor def on_timeout(self): print "Tempo esgotado!" return True # Não mata o coletor #Criando o coletor com timeout de 60 seg streaming_api = tweepy.streaming.Stream(auth, CustomStreamListener(), timeout=60) streaming_api.filter(follow=None, track=consulta, languages=["pt"]) |
Se preferir, pode baixar o arquivo com o código-fonte aqui.
Para executar o código acima, é necessário passar como parâmetro os termos a serem buscados pela API. Para buscar para os termos “nintendo”, “zelda” e “super mario”, por exemplo, a execução seria da seguinte forma (supondo que o código acima foi salvo no arquivo coletor.py):
1 |
python coletor.py "nintendo" "zelda" "super mario" |
Em sua forma padrão, o feedback visual no console seria o nome do autor e texto do tweet. É válido ressaltar que a API de Streaming do Twitter não promete a captura de todos os tweets relacionados aos termos da escuta, especialmente trending topics, que possuem grande volume de dados. Ainda assim, fornece quantidade estatisticamente significante para análise do assunto em questão. Em caso de dúvidas ou problemas, utilize os comentários ou entre em contato!
18 Comentários
André
1 de Abril de 2018 at 11:33Bom dia, Ronan! Estou iniciando nesse ramo de análise de dados e estou com dificuldade para executar o seu Script. Você poderia me explicar mais detalhadamente? Muito obrigado e parabéns pela iniciativa!
Ronan Lopes
2 de Abril de 2018 at 15:23Olá, André! A forma de execução está descrita no post… os únicos parâmetros necessários são os termos da consulta. Vou te enviar por email o arquivo com o código-fonte e exemplo de execução. Obrigado pelo contato!
Priscila
15 de Abril de 2018 at 23:33Olá Ronan Lopes, boa noite. Por favor, poderia menenviar também o arquivo com código fonte e um exemplo de execução. Estou batendo cabeça aqui. Seriei muitíssimo grata.
Ronan Lopes
15 de Abril de 2018 at 23:37Boa noite, Priscila! O email foi enviado… qualquer dúvida só responder o contato. Obrigado!
Vinícius Seixas
3 de Maio de 2018 at 15:47Olá Ronan, Por favor, quando possível poderia me enviar também o arquivo com código fonte e o exemplo de execução? Estou iniciando na área e estou com algumas dificuldades. Agradeço desde já.
Ronan Lopes
3 de Maio de 2018 at 15:51Boa tarde, Vinicius! O email foi enviado… qualquer dúvida só responder o contato. Obrigado!
Gustavo Ferreira
4 de Maio de 2018 at 09:43Ola Ronan, queria me enviasse o arquivo com código fonte e um exemplo de execução também se possível, Obrigado.
Ronan Lopes
4 de Maio de 2018 at 11:18Bom dia, Gustavo! Foi encaminhado no seu email. Qualquer coisa estou à disposição
Ursula
6 de junho de 2018 at 00:17Ei Ronan, você poderia me enviar o código fonte e um exemplo de execução também por favor? Muito obrigada!
Ronan Lopes
6 de junho de 2018 at 00:27Boa noite, Ursula! Encaminhei um email com detalhes. Obrigado!
Andre
20 de agosto de 2018 at 12:46Ronan, boa tarde!
Estou com problemas com relação ao encode. Mesmo copiando o código acima, que está com utf-8, a saida do print continua a não mostrar corretamente a acentuação. Sabe me ajudar?
Ronan Lopes
21 de agosto de 2018 at 14:54Boa tarde, André! Dá uma olhada nas respostas desse tópico no stackoverflow: https://pt.stackoverflow.com/questions/67604/encoding-utf-8-permite-acentos, que tem alguns testes que você pode executar no console pra verificar o que pode estar ocorrendo. Em ambiente linux (ubuntu 18.04) o código acima é suficiente para execução correta. Qualquer coisa entre em contato. Obrigado!
Marco
5 de novembro de 2018 at 15:26Boa tarde Ronan!
Poderia me enviar, por gentileza, um exemplo?
Ronan Lopes
5 de novembro de 2018 at 15:30Boa tarde, Marco! Encaminhei um email com um exemplo. Qualquer dúvida só retornar o contato. Obrigado!
Danielle Ribeiro
22 de novembro de 2018 at 14:41Olá Ronan, boa tarde
Eu gostaria de saber se é possível me enviar, por gentileza, um exemplo. Eu não estou conseguindo captar os dados.
Obrigada pela ajuda.
Ronan Lopes
22 de novembro de 2018 at 14:47Olá, Danielle. Boa tarde! Encaminhei pra você o email com o código-fonte e os detalhes da execução. Qualquer coisa estou à disposição, obrigado!
Sannytet
7 de dezembro de 2018 at 04:16Make a more new posts please 🙂
___
Sanny
Sannytet
11 de dezembro de 2018 at 22:36Nice posts! 🙂
___
Sanny