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.

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), Tecnologista na Agência Espacial Brasileira, 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 June de 2015

    […] By Eduardo Santos […]

Leave a Reply

Twitter

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 504 other subscribers

Alguns direitos reservados

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