Big Data, R

Minerando dados do Facebook com o R

Em junho de 2017 o Facebook atingiu a marca de 2 bilhões de usuários ativos. Com tantos usuários publicando, curtindo, comentando e compartilhando informações, a quantidade de dados gerados pela rede social ultrapassa os 500 petabytes por dia.

Com essa quantidade de dados, muitos insights e informações valiosas podem ser obtidos quando estes dados são coletados e analisados.

 

O pacote Rfacebook

 

Descobri recentemente um pacote do R que se conecta à API do Facebook. Com este pacote é possível executar comandos que coletam dados sobre publicações, páginas e grupos dentro da rede social.

O pacote Rfacebook  possui uma série de funções que permitem extrair essas informações, bem como cruzar os dados para se obter melhores insights. Também é possível, nos argumentos das funções, inserir vetores e/ou matrizes para se extrair dados mais específicos para a sua análise.

Neste artigo vou explicar sobre como conectar à API do Facebook e sobre as funções básicas do pacote Rfacebook. À medida que você for se familiarizando com as funções, use a sua criatividade e conhecimento em programação em R para explorar os dados mais profundamente.

Para se conectar à API do Facebook, é necessário criar um aplicativo no Facebook e gerar um token de acesso.

Não há muito mistério, é um processo bem simples de se realizar. Vamos lá:


Criando o seu aplicativo

 

Para se conectar à API do Facebook, é necessário criar um aplicativo dentro da plataforma Facebook for Developers.

A criação do aplicativo é gratuita e bastante simples, você pode acessar a página utilizando o seu login pessoal do Facebook.

Após aceitar os termos, clique em Adicionar um novo aplicativo, insira um nome para o aplicativo e um e-mail para contato.

Em seguida clique em Crie um número de identificação do aplicativo.

 

Dentro do painel do seu novo aplicativo, repare na ID do Aplicativo e na Chave Secreta do Aplicativo, elas serão importantes na hora de realizar a autenticação dentro do R.

Na aba Produtos, clique em + Adicionar produto.

Selecione Login do Facebook.

Dentro das configurações, certifique-se que o campus Login no OAuth do cliente esteja marcado como Sim.

No campo URIs de redirecionamento do OAuth válidos insira http://localhost:1410/

Salve as alterações.

Com essas configurações, já é possível conectar o R com a API do Facebook via o aplicativo que você criou.

Em alguns casos, pode levar alguns minutos ou até horas para que o seu aplicativo seja “liberado” pelo Facebook. Mas em geral, você já pode ir diretamente para os próximos passos.


Obtendo o token de acesso

 

Para executar os scripts do R e realizar consultas no Facebook, é necessário ter um token de acesso.

Quase todas as funções do pacote Rfacebook pedem como um dos argumentos o token de acesso. O token é válido por 2 horas e sempre que ele expirar, basta voltar ao Facebook for Developers e gerá-lo novamente.

Para obter o token, acesse Ferramentas e Suporte e em seguida Explorador de Graph API.

Clique em Obter token de acesso do usuário.

Irá abrir um campo para você selecionar as permissões do token. Se você criou o aplicativo somente para minerar dados com o R e não compartilhará o seu aplicativo com terceiros, é indiferente os campos que você selecionar.


Conectando o R com a API do Facebook

 

Dentro do R, instale o pacote Rfacebook.

 install.packages("Rfacebook")
library("Rfacebook") 

Faça a autenticação do seu aplicativo com o comando a seguir, inserindo o ID e a chave secreta que estão disponíveis dentro do painel do seu aplicativo.

 fbOAuth <- fbOAuth(app_id="ID", app_secret="Chave secreta", extended_permissions = FALSE) 

Ao executar o comando, irá aparecer no console do R a seguinte mensagem: “Copy and paste into Site URL on Facebook App Settings: http://localhost:1410/ When done, press any key to continue…”

Aperte qualquer tecla para continuar (se você estiver executando os comandos na tela de script, clique na tela de console e dê um enter).

Assim irábrir uma página no seu navegador dizendo “Authentication complete. Please close this page and return to R.”

Pronto, a sua autenticação está feita.

Depois da autenticação, insira o token. Atribua à uma variável com o nome “token” o código do token de acesso que você gerou.

 token <- 'token de acesso' 

Pronto. Agora você já pode executar as funções do pacote e realizar consultas e análises com os dados do Facebook.


Páginas curtidas

 

A função getLikes retorna as páginas curtidas por um determinada usuário, bem como o ID e o website referente a cada página.

 my_likes <- getLikes(user="me", token=token)

Para limitar a quantidade de páginas, basta inserir o argumento “n=” na função.

Você pode realizar a consulta para uma ou mais pessoas, desde que elas mostrem publicamente as páginas que curtem ou se elas utilizarem o seu aplicativo.

No exemplo, eu fiz a consulta para o meu perfil pessoal. Veja o output:


Informações de uma página

 

A função getPage retorna informações das publicações de uma determinada página, tais como:

  • ID da publicação
  • Qual foi a mensagem escrita
  • Data e hora que foi publicada
  • Qual o formato da publicação (link, imagem, texto, vídeo)
  • O link da publicação, caso exista
  • Quantidade de curtidas
  • Quantidade de comentários
  • Quantidade de compartilhamentos

Também é possível obter, para uma determinada publicação, a quantidade de cada uma das suas reações (curtir, amei, haha, uau, triste, grr) através da função getReactions.

No argumento “page” pode ser inserido a string do nome da página (sem os espaços) ou o ID da página.
O argumento “n” retorna a quantidade de publicações a serem exibidas.
Também é possível limitar o período das publicações com os argumentos “since” e “until” (por exemplo: since=’2017/05/01′, until=’2017/05/31).

Como exemplo, executei o comando para obter as últimas 200 publicações da página BBC Brasil.

 posts_BBC <- getPage(page="bbcbrasil", token=token, n=200) 

Veja o resultado (clique na imagem para visualizar em maior resolução):


Pesquisa por páginas

 

A função searchPages retorna uma quantidade determinada de páginas que tenham uma string em comum. Para cada página, são geradas informações tais como:

  • ID da página
  • Informações “sobre”
  • Categoria
  • Descrição
  • Quantidade de curtidas da página
  • Link para a página
  • Cidade, estado e país
  • Coordenadas da localização da página, se existir
  • Nome da página
  • Quantidade de usuários que estão falando sobre
  • Nome de usuário da página
  • Website

Como exemplo, executei o comando para buscar 200 páginas que tenham em comum a string startup:

 paginas_startups <- searchPages(string="startup", token=token, n=200) 

Acabei classificando as páginas pela quantidade de curtidas para uma visualização mais interessante aqui.

Veja o resultado (clique na imagem para visualizar em maior resolução):


Atualizar status

 

É possível publicar no seu perfil pessoal (ou do usuário que utiliza o seu aplicativo) através da função updateStatus:

 updateStatus("texto a ser publicado", token)


Informações de um grupo

 

A função getGroup retorna as informações das publicações de um determinado grupo (se este for aberto), tais como:

  • ID e nome do usuário que fez a publicação
  • Mensagem
  • Data e hora
  • Tipo
  • Link, se houver
  • Quantidade de curtidas
  • Quantidade de comentários
  • Quantidade de compartilhamentos

No exemplo, executei o comando para obter as últimas 100 publicações do grupo R Brasil – Programadores.

 grupo_R <- getGroup("1410023525939155", token, n=100) 

Veja o resultado (clique na imagem para visualizar em maior resolução):


 

Pesquisa por grupos

 

A função searchGroup retorna grupos do Facebook que possuem uma string em comum.

Além do nome e ID de cada grupo, também é informado se o grupo é aberto ou fechado.

Como exemplo, executei o comando para buscar grupos que tenham em comum a string Linux

 grupos_linux <- searchGroup("linux", token=token) 

Veja o resultado:

 

Código com os exemplos

 

Caso você queira explorar o pacote começando pelos exemplos que eu citei neste artigo, disponibilizo a seguir o código com os comandos que utilizei (junto com comentários para facilitar o entendimento).

Ressalto que antes de tudo é necessário instalar o pacote com o comando install.packages(“Rfacebook”).

# Bibliotecas
library("Rfacebook")

# Autenticação
fb_oauth <- fbOAuth(app_id="id", app_secret="chave secreta", extended_permissions = FALSE)

# Token
token <- 'token de acesso'

# Informação de Usuário
  # A função getUsers retorna as informações básicas de um usuário
meu_perfil <- getUsers(user='me', token=token)
  # É possível criar um vetor no argumento "user" e assim obter informações de diferentes usuários
obama_trump <- getUsers(users = c("barackobama", "donaldtrump"), token=token)

# Curtidas
  # A função getLikes retorna as páginas curtidas por um determinada usuário, juntamente ao ID e ao website referente a cada página
minhas_curtidas <- getLikes(user="me", token=token)

# Informações de uma página
  # A função getPage retorna as informações das publicações de uma determinada página
  # no argumento "page" pode ser inserido a string do nome da página(sem os espaços) ou o ID
  # o argumento "n" retorna a quantidade de publicações a serem exibidas
  # também é possível limitar o período das publicações com os argumentos "since" e "until" (ex: since='2017/05/01', until='2017/05/31)
posts_BBC <- getPage(page="bbcbrasil", token=token, n=200)


# Busca por páginas
  # A função searchPages retorna uma quantidade determinada de páginas com uma string em comum
paginas_startups <- searchPages(string="startup", token=token, n=200)

# Atualização de status
  # A função updateStatus permite publicar no perfil do usuário
updateStatus("texto a ser publicado", token)

# Informações de um grupo
  # A função getGroup retorna as informações das publicações de um determinado grupo
grupo_R <- getGroup("1410023525939155", token, n=100)


# Busca por grupos
  # A função searchGroup retorna grupos que possuem uma string em comum
grupos_linux <- searchGroup("linux", token=token) 

 

Para ir além

 

Este artigo teve como propósito mostrar como se cria um aplicativo pelo Facebook for Developers, como conectá-lo ao R e apresentar o pacote Rfacebook e as suas funções básicas.

O pacote possui diversas outras funções, muitas delas possuem restrições que dependem da versão da sua API ou da permissão que você tem com o seu aplicativo. Apresentei aqui as funções que não possuem nenhuma destas restrições.

Além disso, citei as funções em suas formas mais básicas. É possível realizar incontáveis cruzamentos desses dados utilizando outras funções e/ou algoritmos.

O Facebook é uma mina de ouro dos dados. Existe um universo de informações que podem ser extraídas com o pacote Rfacebook.

Consulte o Manual do pacote Rfacebook para maiores detalhes. Veja também o GitHub do desenvolvedor do pacote para estar por dentro de aplicações, informações sobre bugs e sobre atualizações do pacote.

Para aprender mais sobre programação em R, recomendo o site R for Data Science.


Espero que este artigo tenha sido útil e que você possa obter grandes insights analisando os dados do Facebook.

Qualquer comentário, sugestão ou dúvida, utilize o campo abaixo ou as redes sociais que participo. Ficarei muito feliz em te ouvir.

  • Stat Abr

    Parabéns José Guilherme pela iniciativa em compartilhar seus conhecimentos. Pessoas como você ajudam o mundo a se tornar um lugar melhor. Grande abraço.

    • Muito obrigado Stat Abr! Fico muito feliz e honrado com o seu reconhecimento. Acredito que o conhecimento vale muito mais quando o compartilhamos:) grande abraço!

  • André Maciel

    Muito bom cara, valeu as dicas!