Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@sergiospagnuolo
Last active April 29, 2020 01:33
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sergiospagnuolo/4b2351f5752e5f2b64c6978f53965a74 to your computer and use it in GitHub Desktop.
Save sergiospagnuolo/4b2351f5752e5f2b64c6978f53965a74 to your computer and use it in GitHub Desktop.
Buscas no Twitter por minuto

Análise de buscas no Twitter no calor do momento

Este caderno contém funções para que seja possível medir o interesse de buscas no Twitter, com a finalidade de saber de algum assunto está realmente popular na rede social em certo momento. Por conta de limitações na API gratuita do Twitter, recomenda-se a utilização dessa metodologia para saber se um tópico foi popular no último dia ou período do dia.

Um exemplo de como isso foi usado pode ser visto neste tweet

Esta metodologia utiliza as bibliotecas de R Tidyverse e TwitteR para acessar os dados do Twitter.

Você também vai precisar de uma conta de desenvolvedor, a fim de conseguir todas as chaves de API para fazer as buscas (caso não tenha, garanto que é bem fácil).

Depois de feitos os passos mais, digamos, burocráticos de carregamento de bibliotecas e chaves, vamos carregar de fato os dados para que possamos trabalhar com eles.

A função searchTwitter cria um conjunto de dados chamado tw que busca pela palavra 'Queiroz' dentro do Twitter, incluindo retweets.

Note o parâmetro n dentro dessa função, ele é particularmente importante. Não sei ao certo o limite da API, mas meus testes me indicam que um número seguro é de 20.000 buscas, funciona. Mais do que isso, a API pode não retonar nada. Mas sinta-se à vontade para tentar mais, não custa arriscar.

A função de baixo, twListToDF, felizmente facilita nossa vida ao transformar o array fornecido pelo Twitter em um data frame.

Agora, com os dados carregados, é só uma questão de acertar o horário e agrupar. Uma nuance aqui é que o Twitter fornece os dados por segundo, o que dificulta o agrupamento.

Precisamos, então, tirar os segundos da nossa equação para então aplicar o agrupamento, feito a partir de uma contagem simples.

Por fim, forçamos a compreensão dos dados como POSIXct, a fim de que o eixo X do nosso gráfico seja compreendido corretamente, e também ajustamos o horário para compensar a hora GMT que o Twitter fornece.

devtools::install_github("geoffjentry/twitteR")
library(twitteR)
library(tidyverse)
# carregue as chaves
consumer_key <- "chave1"
consumer_secret <- "chave2"
access_token <- "chave3"
access_secret <- "chave4"
setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret)
# realize a busca dentro do Twitter
tw = searchTwitter("Queiroz",
n=20000,
lang="pt",
since="2019-10-20",
until=NULL,
locale=NULL,
geocode=NULL,
sinceID=NULL,
maxID=NULL,
resultType=NULL,
retryOnRateLimit=120)
d = twitteR::twListToDF(tw)
# arredondamento e agrupamento
d$created <- round(d$created, units = "mins")
d$new <- as.character(d$created)
contagem <- d %>%
group_by(new) %>%
count()
library(lubridate)
contagem$new <- as.POSIXct(contagem$new)
contagem$new <- contagem$new - hours(3)
ggplot(contagem, aes(new,n)) +
geom_point() +
labs(x="Data",
y="Resultados por minuto (inclui retweets)",
title = "Buscas por 'Queiroz' no Twitter")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment