Extraindo dados do Twitter com o Tarantulla

Leticia Lapenda
Oncase
Published in
6 min readJun 4, 2018

--

Se você está aqui é provável que esteja trabalhando em um projeto de extração de dados de redes sociais, como o Twitter, por exemplo. O problema é que, talvez, você ainda não saiba como começar ou esteja procurando uma solução de rápido deploy e que necessite de poucas configurações prévias. Se esse é o caso, temos uma boa notícia: você acaba de encontrar o que procura!

Aqui na Oncase, desenvolvemos uma solução para extrair informações de páginas de redes sociais de maneira rápida e com alguns poucos ajustes iniciais. A solução que chamamos de Tarantulla possui vários submódulos, cada um específico para a rede social que você deseja analisar - Twitter, Youtube, Facebook e até mesmo páginas web.

Você pode está se perguntando por que escolhemos o nome Tarantulla! O fato é que Tarântula é uma aranha e, assim como as teias que elas são capazes de construir, que conectam vários pontos, a proposta da nossa solução é conectar dados de diversas fontes, criando um módulo robusto e, ao mesmo tempo, flexível no que diz respeito à possibilidade de usar submódulos independentes, como o Tarantulla-Twitter, por exemplo.

Neste post falaremos sobre o Tarantulla-Twitter, que como vocês podem imaginar, é o módulo do Tarantulla para extração de dados de páginas do Twitter.

Para executá-lo é necessário chaves de acesso à API User Timeline, Python 3.x (>=3.4), pip3, tweepy e sistema operacional Linux. Adicionalmente, caso você deseje organizar os dados retornados pela API em um banco de dados, é possível utilizar o Pentaho Data Integration 8 (com JDK 8).

A solução recebe como input o nome da página do Twitter que se deseja analisar e retorna os campos:

  • ID do twitter
  • timestamp
  • data de publicação
  • screen name do publisher
  • full name do publisher
  • conteúdo do tweet
  • hashtags
  • língua
  • local
  • categoria
  • url do tweet
  • número de retweets
  • número de favoritos
  • engajamento

Agora vamos brincar um pouco com o Tarantulla-Twitter! Para realizar as análises, selecionei três publishers do Twitter conhecidos no mundo da Tecnologia: o AndroidPIT.com (@AndroidPITcom), o TechTudo (@TechTudo) e o GizmodoBR (@GizmodoBR). O AndroidPIT.com é um publisher dos Estados Unidos, enquanto o TechTudo e o GizmodoBR são publishers brasileiros.

Depois de executar o Tarantulla-Twitter e armazenar os tweets retornados pela solução em um banco PostgreSQL, ficamos curiosos para analisar os dados retornados. Notamos que foram contabilizados 3.238 tweets do AndroidPIT.com, 3.222 tweets do TechTudo e 3.158 tweets do GizmodoBR. Ficamos tranquilos para realizar as próximas análises já que a quantidade de tweets retornada por publisher é semelhante, o que nos permite comparar os resultados para esses publishers de forma equivalente. Isso ocorre já que, se houvesse uma quantidade discrepante de tweets entre os publishers, poderíamos estar dando ao publisher com maior quantidade de publicações na base, uma chance maior de possuir tweets muito populares, por exemplo.

Primeiramente, investigamos a quantidade média de retweets (rts) por publisher. Curioso notar que o AndroidPIT.com possui uma baixa quantidade de retweets quando comparado com os publishers brasileiros.

De forma semelhante, ao analisar a quantidade média de favoritos por publisher, notamos que os publishers BR continuam na frente, contudo, enquanto o GizmodoBR parece ser o líder em retweets, o TechTudo sai na frente quando o assunto é quantidade de favoritos.

Os resultados foram persistentes em mostrar que o AndroidPIT.com possui uma quantidade de interações inferior em relação aos outros dois publishers. O que pode causar isso?

Uma análise um pouco mais cuidadosa nos leva à página desses publishers, onde observamos a quantidade de seguidores de cada um. Percebemos que faz sentido que uma página com muitos seguidores possua mais interações, não é mesmo?

De forma a confirmar nossas suspeitas o AndroidPIT.com é o publisher com menor quantidade de seguidores: 16.8K, comparado ao TechTudo (399K) e ao GizmodoBR (163K). O que nos leva a acreditar que esta é a razão pela qual o AndroidPIT.com possui menos retweets e favoritos do que os outros.

Isso nos leva a um outro questionamento: como poderíamos calcular uma métrica de engajamento que tornasse possível comparar de maneira mais “justa” esses três publishers?

Para isso, devemos considerar não só a quantidade bruta de interações na página, mas também a quantidade de seguidores. Sugerimos a métrica a seguir, que vamos chamar de engajamento.

Sendo assim, vamos analisar o gráfico do engajamento.

Interessante notar que o AndroidPIT.com supera o TechTudo nesta nova análise, o que sugere que a página daquele publisher recebe mais engajamento por parte dos seus seguidores do que a deste. Além disso, o GizmodoBR se consagrou como o publisher mais popular, que mais engaja o público!

Só por curiosidade, dos top 10 tweets com mais engajamento nessa base de dados, 2 são do AndroidPIT.com, 5 do TechTudo e 3 do GizmodoBR. Notem que apesar do TechTudo perder para os outros dois publishers quando o quesito é engajamento, tudo indica que esse publisher possui algumas matérias de grande interesse para o público.

Ah e você deve estar se perguntando qual o tema abordado nesses tweets! Sim, analisamos isso também: Sony Xperia XZ2, Samsung Galaxy S9, CBLoL, múmia alienígena, FIFA 18, Android Oreo, útero artificial e possíveis últimos sobreviventes da Terra. Variado, não!?

Configurando o Tarantulla-Twitter

Se você gostou, e deseja realizar análises parecidas com os dados de seu interesse, continue a leitura, pois vamos explicar, de forma breve, como configurar e executar a solução do Tarantulla-Twitter. Se você quiser mais detalhes, pode consultar a página do Github da Oncase:

Vamos seguir alguns passos para a configuração e deploy da solução. São basicamente 3 passos:

  1. Clonar repositório Git
  2. Ajustar arquivo de publishers
  3. Ajustar arquivo com chaves da API

E, caso deseje integrar os resultados com um banco de dados, temos dois passos adicionais:

4. Ajustar arquivos com informações sobre o banco de dados

5. Executar script SQL

Vale ressaltar que a integração com o banco de dados é feita através do PDI — Pentaho Data Integration — uma plataforma para acelerar a construção de fluxos de processamento de dados.

Dito isto, vamos explicar cada passo:

  1. Inicialmente, clone o repositório, preferencialmente em ‘/opt/git’.

2. Agora precisamos ajustar o arquivo config-timeline.json. Nele encontram-se informações importantes para que a solução saiba de quais páginas deve recuperar os dados (publishers), bem como onde deve armazenar os dados recuperados (temp_output). Além disso, é importante definir o python que deverá ser utilizado (python-command), principalmente se você possuir mais de um python em sua máquina. O arquivo é como no exemplo abaixo:

{
"temp_output": "../data/",
"python-command":"python3",
"publishers" :
[
{
"_twitter_screen": "AndroidPITcom",
"name": "AndroidPIT US"
}
]
}

3. Ajustar arquivo api-keys.json

Você deve possuir as chaves de acesso da API, que serão utilizadas pelo Tarantulla-Twitter. Edite o arquivo api-keys.json, informando suas chaves.

Será necessário informar 4 chaves: o token de acesso (Access Token), o token secreto de acesso (Access Token Secret), a chave do consumidor (Consumer key) e a chave secreta do consumidor (Consumer key secret).

Vale lembrar que a API user_timeline do Twitter retorna o máximo de 3.200 dos tweets mais recentes de um dado publisher.

4. Ajustar arquivo config-db.json

Edite o arquivo config-db.json informando o nome do banco, nome de schema e da tabela que serão utilizados, bem como a senha e outras características relevantes.

5. Executar script SQL

O script SQL possui uma cláusula CREATE TABLE que será responsável por criar a tabela. Lembre-se de alterar esse script de acordo com o nome do schema e da tabela que deseja utilizar.

Executando o Tarantulla-Twitter

Pronto! Agora você já pode usar o Tarantulla-Twitter. Se você deseja utilizar a solução com o PDI apenas execute o comando:

$ <PDI_HOME>/./kitchen.sh  -file="<YOUR TARANTULLA TWITTER FOLDER>/etl/main.kjb"

Caso você tenha configurado PDI_HOME para /opt/Pentaho/design-tools/data-integration é suficiente executar:

$ <YOUR TARANTULLA TWITTER FOLDER>/scripts/etl.sh job ../etl/main.kjb

Caso deseje executar sem o PDI, basta executar:

$ python3 user_timeline_api.py

Então é isso! Espero que o Tarantulla-Twitter seja a “mão na roda” que você estava buscando! Se tiver qualquer dúvida, entra em contato com a gente! Vejo vocês na próxima!

--

--