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.