All for Joomla All for Webmasters
Python

Tweepy: Coletor de Tweets em Python

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):

Se ainda não tiver o PIP instalado, pode obtê-lo nas distros Linux pelo apt-get:

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.

Tweepy - onde encontrar as chaves de autenticação na plataforma do Twitter
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

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):

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!

Você Também Pode Gostar

35 Comentários

  • Responder
    André
    1 de Abril de 2018 at 11:33

    Bom 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!

    • Responder
      Ronan Lopes
      2 de Abril de 2018 at 15:23

      Olá, 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!

  • Responder
    Priscila
    15 de Abril de 2018 at 23:33

    Olá 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.

    • Responder
      Ronan Lopes
      15 de Abril de 2018 at 23:37

      Boa noite, Priscila! O email foi enviado… qualquer dúvida só responder o contato. Obrigado!

  • Responder
    Vinícius Seixas
    3 de Maio de 2018 at 15:47

    Olá 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á.

    • Responder
      Ronan Lopes
      3 de Maio de 2018 at 15:51

      Boa tarde, Vinicius! O email foi enviado… qualquer dúvida só responder o contato. Obrigado!

    • Responder
      Gustavo Ferreira
      4 de Maio de 2018 at 09:43

      Ola Ronan, queria me enviasse o arquivo com código fonte e um exemplo de execução também se possível, Obrigado.

      • Responder
        Ronan Lopes
        4 de Maio de 2018 at 11:18

        Bom dia, Gustavo! Foi encaminhado no seu email. Qualquer coisa estou à disposição

  • Responder
    Ursula
    6 de junho de 2018 at 00:17

    Ei Ronan, você poderia me enviar o código fonte e um exemplo de execução também por favor? Muito obrigada!

    • Responder
      Ronan Lopes
      6 de junho de 2018 at 00:27

      Boa noite, Ursula! Encaminhei um email com detalhes. Obrigado!

  • Responder
    Andre
    20 de agosto de 2018 at 12:46

    Ronan, 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?

    • Responder
      Ronan Lopes
      21 de agosto de 2018 at 14:54

      Boa 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!

  • Responder
    Marco
    5 de novembro de 2018 at 15:26

    Boa tarde Ronan!

    Poderia me enviar, por gentileza, um exemplo?

    • Responder
      Ronan Lopes
      5 de novembro de 2018 at 15:30

      Boa tarde, Marco! Encaminhei um email com um exemplo. Qualquer dúvida só retornar o contato. Obrigado!

  • Responder
    Danielle Ribeiro
    22 de novembro de 2018 at 14:41

    Olá 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.

    • Responder
      Ronan Lopes
      22 de novembro de 2018 at 14:47

      Olá, 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!

  • Responder
    Sannytet
    7 de dezembro de 2018 at 04:16

    Make a more new posts please 🙂
    ___
    Sanny

  • Responder
    Sannytet
    11 de dezembro de 2018 at 22:36

    Nice posts! 🙂
    ___
    Sanny

  • Responder
    Helena
    15 de Março de 2019 at 16:00

    Olá Ronan, tudo bem?
    Gostaria de saber qual o volume máximo de tweets que eu consigo capturar?

    Posso usar o método com várias opções no track,? Por exemplo:

    streaming_api.filter(follow=None, track=[“assalto”, “sequestro”,”roubo”], languages=[“pt”])

    Você poderia também me enviar o código fonte e um exemplo de execução por favor?

    Muito obrigada!

    • Responder
      Ronan Lopes
      27 de Janeiro de 2020 at 13:38

      Olá, Helena!
      Você não precisa se preocupar quanto ao rate limit da streaming API, uma vez que você abre uma conexão e recebe os tweets de acordo com o envio da API. Esse limite deve ser observado apenas para a API REST. Entretanto, é válido ressaltar que a Streaming API assegura uma coleta relativamente baixa do total de tweets do assunto (cerca de 1%, segundo algumas pesquisas).
      Pode usar mais de um termo sim, inclusive no exemplo que vou te enviar no email, há mais de um termo a ser buscado. Obrigado!

  • Responder
    João Augusto
    24 de Maio de 2019 at 00:18

    Boa noite, primeiramente gostaria de parabenizá-lo pelo ótimo material, muito bom mesmo. Tenho uma dúvida, os resultados dessas buscas vão vir com datas específicas, tipo posso estipular um período, ou só vem tweets postados daquele momento para frente?

    Obrigado

    • Responder
      Ronan Lopes
      24 de Maio de 2019 at 11:30

      Bom dia, João! Obrigado pelas considerações. Nesse caso, estamos utilizando a streaming api, então ele “escuta” os tweets que estão sendo postados com os termos consultados. Para recuperar tweets retroativos, dê uma olhada na Search API, não é muito difícil de utilizar também. Abraço

  • Responder
    Jonas Luersen
    10 de junho de 2019 at 16:54

    Boa tarde, poderia me enviar o código? também sou aluno da PUC Minas, preciso capturar tweets para uma análise de sentimentos.

  • Responder
    Luciana
    27 de Janeiro de 2020 at 11:50

    Olá, Ronan.
    Excelente post! Eu estava mesmo procurando algo a respeito.
    Mas está dando erro com o código 401 quando executo.
    Poderia enviar-me o código por e-mail?
    Grata
    Luciana

  • Responder
    JONATA PAULINO DA COSTA
    28 de Fevereiro de 2020 at 14:31

    Ronan, muito bom seu tutorial. Gostaria de saber como eu poderia baixar tweets de anos anteriores com o paython.

  • Responder
    Marco
    8 de Março de 2021 at 16:54

    Ronan, gostaria de saber se tem como extrair os tweets de uma conta específica? Ex: Extrair as publicações do trump sobre terra plana. Algo do tipo. Se vim, você poderia me explicar? Estava mexendo no Python e consigo pesquisar por #, por @ de usuário não consegui.

    • Responder
      Ronan Lopes
      10 de Março de 2021 at 14:12

      Boa tarde, Marco! É possível sim, mas nesse caso não seria um coletor via Streaming API, seria outro endpoint, que recupera a timeline de um usuário. Dentro dos tweets recuperados, você poderia filtrar pelo atributo de texto aqueles que contém o termo desejado. Mais sobre o endpoint aqui: https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/overview

      • Responder
        Marco
        10 de Março de 2021 at 14:28

        Obrigado, vou dar uma olhada.

  • Responder
    Wagner Nunes
    6 de Abril de 2021 at 19:05

    Roanan, apesar de ter instalado o tweepy o meu código está apresentando o seguinte erro: ModuleNotFoundError: No module named ‘tweepy’

  • Responder
    Mikaelle
    2 de Fevereiro de 2022 at 00:43

    Olá! Poderia me enviar um e-mail com o código-fonte e os detalhes da execução? Sou iniciante no Python e gostaria de aprender. Aliás, parabéns pelo post!

  • Deixe uma resposta para Marco Cancelar Resposta