Extraindo dados de redes sociais com Python

http://www.eduardosan.com/wp-content/uploads/2015/06/python-logo.pngExtraindo dados de redes sociais com Python

No exemplo de hoje vamos apresentar o plugin Python Twitter para realizar a mineração de dados de redes sociais. O objetivo é muito simples: vamos buscar algo que esteja acontecendo e verificar como as pessoas estão falando sobre isso nas redes sociais.

  • Pré-requisitos: Python 2.7 (ainda não teste no Python3)
  • Conta ativa no Twitter

Antes de começar você precisa obter um token para realizar as buscas no Twitter, conforme descrito no README.md do próprio módulo. Você pode acessar o site do Twitter para obter manualmente um token ou ainda utilizar o script get_acess_token.py fornecido no próprio módulo Python Twitter. Basta executar o script e seguir as instruções que estão ativas na tela.

O exemplo abaixo vai verificar se você conseguiu com sucesso carregar suas credenciais executando a chamada de verificação do próprio módulo:

import twitter
import pprint
 
api = twitter.Api(consumer_key='consumer_key',
                      consumer_secret='consumer_secret',
                      access_token_key='access_token',
                      access_token_secret='access_token_secret')
 
api.VerifyCredentials()
 

Agora que você conseguiu autenticar, vamos realizar uma busca simples pela palavra ladrão trazendo apenas os últimos 10 resultados:

status_list = api.GetSearch(
    geocode=None, term=u”ladrão”, since_id=None,
    lang=’pt’, count=10, result_type=’recent’
)
 
print(status_list)
[, , , , , , , , , ] 


Obtemos como resposta uma lista de instâncias da classe status. Uma das grandes vantagens do módulo é possuir uma interface excelente de documentação. Vejamos a documentação da classe:

help(twitter.Status)
Help on class Status in module twitter.status:

class Status(__builtin__.object)
|  A class representing the Status structure used by the twitter API.
|
|  The Status structure exposes the following properties:

(...)

|  withheld_copyright
|
|  withheld_in_countries
|
|  withheld_scope

Vejamos então qual foi o primeiro resultado retornado:

status_list[0].GetText()
# u’RT @PandaRcds: @edmilsonpapo10 @OThereza MAIS UMA DAS MENTIRAS DO LULA LADR\xc3O DO BRASIL!’ 

Agora vem a parte da análise propriamente dita: de posse dos dados na mão, o que eu posso fazer com eles? Aí é que entra o trabalho do analista de dados: sabendo qual é o conteúdo dos tweets, vamos descobrir quais as hashtags mais utilizadas? Pretendo abordar esse aspecto em mais detalhes mais à frente, mas no momento vamos apenas extrair uma lista das hashtags e contar as ocorrências.

hashtags = dict()
 
for status in status_list:
    status_hashtags = status.hashtags
    for hash in status_hashtags:
        if hashtags.get(hash.text) is None:
            hashtags[hash] = 1
        else:
            hashtags[hash] += 1 
 
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(hashtags)

{   u'FDP': 1,
u'JackWarner': 1,
u'LADR\xc3O': 1,
u'Sele\xe7\xe3osportv': 1,
u'VAGABUNDO': 1,
u'diariodaputaria': 1,
u'globoesporte': 1}

Dá pra ter um aperitivo? Em um próximo post vamos abordar questões como termos mais frequentes e modelagem de tópicos.

Deixei um gist com todo o código pra quem quiser brincar.

0saves


Se você gostou desse post, deixe um comentário ou inscreva-se no feed RSS para ter todas os posts enviados para o seu agregador preferido.

Author Description

Eduardo Santos

Mestre em Computação Aplicada pela Universidade de Brasília (UnB), Senior Developer na empresa YACOWS, professor do Uniceub e cientista de dados (data scientist).

There are 1 comments. Add yours

  1. Pingback: Eduardo F. Santos - Extraindo dados de redes sociais com Python 9 de junho de 2015

    […] By Eduardo Santos […]

Deixe uma resposta

Twitter

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 12 outros assinantes

Alguns direitos reservados

Licença Creative Commons
Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-NãoComercial 4.0 Internacional.